Estoy trabajando en la aplicación de Android. Quiero que se coloquen 4 botones horizontalmente en la parte inferior de la pantalla. En estos 4 botones, 2 botones tienen imágenes en ellos. El borde de los botones debe ser de color negro y el borde debe ser lo más delgado posible. Cuando hago clic en el botón, quiero que el fondo del botón cambie a color azul sin cambiar el color del borde y debe permanecer en ese color durante un tiempo. ¿Cómo puedo lograr este escenario en Android?¿Cómo cambiar el color del botón en Android cuando se hace clic?
Respuesta
Consulte esto,
boolean check = false;
Button backward_img;
Button backward_img1;
backward_img = (Button) findViewById(R.id.bars_footer_backward);
backward_img1 = (Button) findViewById(R.id.bars_footer_backward1);
backward_img.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
check = true;
backward_img.setBackgroundColor(Color.BLUE);
}
});
if (check == true) {
backward_img1.setBackgroundColor(Color.RED);
backward_img.setBackgroundColor(Color.BLUE);
}
Un enfoque consiste en crear un archivo XML como este en drawable
, llamado whatever.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_focused="true"
android:state_pressed="true"
android:drawable="@drawable/bgalt" />
<item
android:state_focused="false"
android:state_pressed="true"
android:drawable="@drawable/bgalt" />
<item android:drawable="@drawable/bgnorm" />
</selector>
bgalt
y bgnorm
son imágenes PNG en dibujable.
Si crea los botones programáticamente en su actividad, se puede establecer el fondo con:
final Button b = new Button (MyClass.this);
b.setBackgroundDrawable(getResources().getDrawable(R.drawable.whatever));
Si establece sus botones estilo con un XML, que haría algo así:
<Button
android:id="@+id/mybutton"
android:background="@drawable/watever" />
Y finalmente un link to a tutorial. Espero que esto ayude.
También puede reemplazar esos archivos descartables en el archivo XML con definiciones de colores si desea evitar el uso de imágenes. – haseman
@haseman increíble ... ¿cómo lo sabes? –
@ jshin47 una cantidad empírica de prueba y error. He escrito dos libros sobre el desarrollo de Android ahora :-) – haseman
Prueba esto ......
En primer lugar crear un archivo XML denominado button_pressed.xml Estos son sus contenidos.
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true"
android:state_pressed="false"
android:drawable="@drawable/icon_1" />
<item android:state_focused="true"
android:state_pressed="true"
android:drawable="@drawable/icon_1_press" />
<item android:state_focused="false"
android:state_pressed="true"
android:drawable="@drawable/icon_1_press" />
<item android:drawable="@drawable/icon_1" />
</selector>
No intente esto con el botón.
int imgID = getResources().getIdentifier("button_pressed", "drawable", getApplication().getPackageName());
button.setImageResource(imgID);
button_pressed.xml debe estar en la carpeta dibujable. icon_1_press e icon_1 son dos imágenes para presionar un botón y enfocar normalmente.
Si desea cambiar la imagen de fondo o el color del botón cuando se lo presiona, simplemente copie este código y pegue su proyecto en la ubicación exacta que se describe a continuación.
<!-- Create new xml file like mybtn_layout.xml file in drawable -->
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/pressed" /> <!--pressed -->
<item android:drawable="@drawable/normal" /> <!-- Normal -->
</selector>
<!-- Now this file should be in a drawable folder and use this
single line code in button code to get all the properties of this xml file -->
<Button
android:id="@+id/street_btn"
android:layout_width="wrap_content"
android:background="@drawable/layout_a" > <!-- your required code -->
</Button>
Guardar este código en la carpeta estirable con "bg_button.xml" y llamar "@ estirable/bg_button" como fondo de botón en su xml:
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
<shape>
<solid
android:color="#004F81" />
<stroke
android:width="1dp"
android:color="#222222" />
<corners
android:radius="7dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
<item>
<shape>
<gradient
android:startColor="#89cbee"
android:endColor="#004F81"
android:angle="270" />
<stroke
android:width="1dp"
android:color="#4aa5d4" />
<corners
android:radius="7dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
</selector>
Gracias hombre, con estilo puede reducir el tamaño de la aplicación. buena idea para no usar drawable –
Por otro lado, los fondos extraíbles basados en vectores xml suelen ser peores para el rendimiento que las imágenes, especialmente en dispositivos más antiguos. No optimices prematuramente, pero tenlo en cuenta también. –
Trate Esta
final Button button = (Button) findViewById(R.id.button_id);
button.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_UP) {
button.setBackgroundColor(Color.RED);
} else if(event.getAction() == MotionEvent.ACTION_DOWN) {
button.setBackgroundColor(Color.BLUE);
}
return false;
}
});
hai la manera más fácil es esto:
agrega este código a mainactivity.java
public void start(View view) {
stop.setBackgroundResource(R.color.red);
start.setBackgroundResource(R.color.yellow);
}
public void stop(View view) {
stop.setBackgroundResource(R.color.yellow);
start.setBackgroundResource(R.color.red);
}
y luego en su actividad
<button android:id="@+id/start" android:layout_height="wrap_content" android:layout_width="wrap_content" android:onclick="start" android:text="Click">
</button><button android:id="@+id/stop" android:layout_height="wrap_content" android:layout_width="wrap_content" android:onclick="stop" android:text="Click">
o seguir a lo largo de esta tutorial
Soy utilizar este código (con efecto dominó):
<ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="@color/color_gray">
<item android:id="@android:id/mask">
<color android:color="@color/color_gray" />
</item></ripple>
que pueda intente este código para resolver su problema
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/login_selected" /> <!-- pressed -->
<item android:state_focused="true"
android:drawable="@drawable/login_mouse_over" /> <!-- focused -->
<item android:drawable="@drawable/login" /> <!-- default -->
</selector>
escribir este código en tu dibujable hacer un nuevo recurso y el nombre de lo que quiere y luego escribir el nombre de este drwable en el botón mismos que nos referimos a la imagen src en Android
Esta respuesta apareció en la cola de revisión de baja calidad, presumiblemente porque no proporciona ninguna explicación del código. Si este código responde a la pregunta, considere agregar agregando texto que explique el código en su respuesta. De esta forma, es mucho más probable que obtengas más votos ascendentes y ayudes al indagador a aprender algo nuevo. – lmo
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- default -->
<item
android:state_pressed="false"
android:state_focused="false">
<shape
android:innerRadiusRatio="1"
android:shape="rectangle" >
<solid android:color="#00a3e2" />
<padding
android:bottom="10dp"
android:left="10dp"
android:right="10dp"
android:top="10dp" />
</shape>
</item>
<!-- button focused -->
<item
android:state_pressed="false"
android:state_focused="true">
<shape
android:innerRadiusRatio="1"
android:shape="rectangle" >
<solid android:color="#5a97f5" />
<padding
android:bottom="5dp"
android:left="10dp"
android:right="10dp"
android:top="5dp" />
</shape></item>
<!-- button pressed -->
<item
android:state_pressed="true"
android:state_focused="false">
<shape
android:innerRadiusRatio="1"
android:shape="rectangle" >
<solid android:color="#478df9"/>
<padding
android:bottom="10dp"
android:left="10dp"
android:right="10dp"
android:top="10dp" />
</shape></item>
</selector>
Realmente no puedo entender la cita inicial "Ya Mahdi aj" ... –
Probablemente quiso decir ** "Hail Mahdi aj" ** – CodeIt
el Mahdī, es el último salvador de la humanidad y el Imán final de los Doce Imames que Emergerá con Isa (Jesucristo) para cumplir su misión de traer paz y justicia al mundo. –
Para hacer frente adecuadamente por cuánto tiempo desea que el botón permanezca en su otro color que aconsejaría esta versión:
button.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
button.setBackground(getResources().getDrawable(R.drawable.on_click_drawable));
break;
case MotionEvent.ACTION_UP:
new java.util.Timer().schedule(
new java.util.TimerTask() {
@Override
public void run() {
((Activity) (getContext())).runOnUiThread(new Runnable() {
@Override
public void run() {
button.setBackground(getResources().getDrawable(R.drawable.not_clicked_drawable));
}
});
}
}, BUTTON_CLICK_TIME_AFTER_RELEASE_ANIMATION);
break;
default:
}
return false;
}
});
BUTTON_CLICK_TIME_AFTER_RELEASE_ANIMATION indica después de cuánto tiempo [ms] el botón se restablecerá a su estado anterior (sin embargo migh quiero usar algún valor booleano para verificar que el botón no se haya utilizado entre medio, dependiendo de lo que quiera lograr ...).
- 1. Cambiar el color de un ancla cuando se hace clic
- 2. Cómo forzar LostFocus cuando se hace clic en el botón
- 3. Cambiar el color del texto del botón cuando se selecciona
- 4. cambiar el contenido del div cuando se hace clic en el enlace/botón
- 5. ¿Cómo se reproduce el sonido cuando se hace clic en el botón en Android?
- 6. cambiar el color del botón de texto cuando se presiona
- 7. Cambiar el color del botón en AlertDialog
- 8. cambiar color de fondo del div cuando se hace clic en la casilla de verificación
- 9. TextView android: Cambiar el color del texto al hacer clic
- 10. Pidiendo confirmación cuando se hace clic en el botón "X"
- 11. ¿La aplicación se minimiza en la bandeja del sistema cuando se hace clic en el botón?
- 12. Android cómo hacer resaltar la vista cuando se hace clic?
- 13. Cambiar el color DIV cuando se hace clic en otro DIV
- 14. ¿Por qué cambiar el botón Color of Default hace que se vea RECTANGLE en Android?
- 15. ¿Cómo abrir Gmail Componer cuando se hace clic en un botón en la aplicación de Android?
- 16. Reproducir un sonido cuando se hace clic en Android
- 17. cambiar el color de fondo del diseño en Android
- 18. Botón personalizado de Android; cambiar el color del texto
- 19. ¿Alerta de Jquery cuando se hace clic en el botón central del mouse?
- 20. cambiar el color de fondo del botón al hacer clic en
- 21. Cambiar el color del subrayado en android
- 22. jQuery ocultar si se hace clic fuera del botón
- 23. ¿Cómo puedo cambiar el color predeterminado del botón en iPhone?
- 24. ¿Cómo cambiar el color del botón de alternar?
- 25. botón personalizado: cambiar el estilo cuando se pulsa el botón
- 26. El formulario se envía en FireFox cuando se hace clic en cualquier botón de la página
- 27. cómo redirigir a una URL determinada mientras se hace clic en el botón en Android?
- 28. ¿Cómo se abre un cuadro de alerta cuando se hace clic en el botón de actualización del navegador?
- 29. ¿Cómo resaltar ImageView cuando se enfoca o se hace clic?
- 30. Haciendo que los navegadores ignoren el hash URL cuando se hace clic en el botón Atrás
Esto configurará el BG permanentemente, es decir, si el usuario hace clic en el botón Atrás, el fondo será rojo. – methode
@methode: ok, consulte la nueva respuesta que he corregido oldanswer –