¿Cómo aclarar un botón?
Tengo un botón definido como se muestra a continuación. Cuando quiero deshabilitarlo, utilizo my_btn.setEnabled(false)
, pero también me gustaría ponerlo en gris. ¿Cómo puedo hacer eso?
Gracias
- Agregar botón a un diseño mediante programación
- Color del borde del botón de Android
- El botón flotante de Android no se muestra
- Cómo eliminar el relleno alrededor de los botones en Android?
- Cambiar el color del botón de Android en onClick?
<Button android:id="@+id/buy_btn" style="@style/srp_button" />
Style / srp_button
<style name="srp_button" parent="@android:style/Widget.Button"> <item name="android:background">@drawable/btn_default</item> <item name="android:layout_width">wrap_content</item> <item name="android:layout_height">wrap_content</item> <item name="android:textColor">#ffffff</item> <item name="android:textSize">14sp</item> <item name="android:typeface">serif</item> <item name="android:paddingLeft">30dp</item> <item name="android:paddingRight">30dp</item> <item name="android:paddingTop">5dp</item> <item name="android:paddingBottom">5dp</item> </style>
Drawable / btn_default.xml
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="@color/pink" /> <corners android:radius="6dp" /> </shape>
- Botón de Android con texto e imagen
- Cómo subrayar el texto del botón en Android?
- ¿Cómo ajustar el texto en el botón?
- Android: la altura del botón no cambia
- Hacer un botón semitransparente tal que el color del botón debe ser visible y el fondo debe ser visible
- Clickable Button (o cualquier View) dentro de EditText en android
- Alineación del texto en el botón
- Android Uso de la lista de capas para el selector de botones
Tienes que proporcionar 3 ó 4 estados en tu btn_defaut.xml
como selector.
- Estado presionado
- Estado predeterminado
- Estado de enfoque
- Estado activado (estado deshabilitado con indicación falsa, ver comentarios)
Usted proporcionará el efecto y el fondo para los estados en consecuencia.
Aquí está una discusión detallada: Botón estándar de Android con un color diferente
También podría hacer que aparezca como desactivado, estableciendo el alpha (haciéndolo semi-transparente). Esto es especialmente provechoso si su fondo del botón es una imagen, y usted no desea crear estados para él.
button.setAlpha(.5f); button.setClickable(false);
La solución más fácil es establecer el filtro de color a la imagen de fondo de un botón como he visto aquí
Puede hacer lo siguiente:
if ('need to set button disable') button.getBackground().setColorFilter(Color.GRAY, PorterDuff.Mode.MULTIPLY); else button.getBackground().setColorFilter(null);
Espero haber ayudado a alguien …
Button button = (Button)findViewById(R.id.buy_btn); button.setEnabled(false);
Set Haga clic en false y cambie el color backgroung como:
callButton.setClickable(false); callButton.setBackgroundColor(Color.parseColor("#808080"));
Todas las respuestas dadas funcionan bien, pero recuerdo haber aprendido que usar setAlpha puede ser una mala idea en cuanto a rendimiento (más información aquí ). Así que la creación de un StateListDrawable es una mejor idea para gestionar el estado de los botones deshabilitado. Así es cómo:
Cree un XML btn_blue.xml en la carpeta res / drawable:
<!-- Disable background --> <item android:state_enabled="false" android:color="@color/md_blue_200"/> <!-- Enabled background --> <item android:color="@color/md_blue_500"/>
Cree un estilo de botón en res / values / styles.xml
<style name="BlueButton" parent="ThemeOverlay.AppCompat"> <item name="colorButtonNormal">@drawable/btn_blue</item> <item name="android:textColor">@color/md_white_1000</item> </style>
A continuación, aplique este estilo a su botón:
<Button android:id="@+id/my_disabled_button" android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/BlueButton"/>
Ahora cuando llamas btnBlue.setEnabled(true)
o btnBlue.setEnabled(false)
los colores de estado cambiarán automáticamente.
Debe crear un archivo XML para el botón deshabilitado ( drawable / btn_disable.xml )
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="@color/grey" /> <corners android:radius="6dp" /> </shape>
Y crear un selector para el botón ( drawable / btn_selector.xml )
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/btn_disable" android:state_enabled="false"/> <item android:drawable="@drawable/btn_default" android:state_enabled="true"/> <item android:drawable="@drawable/btn_default" android:state_pressed="false" /> </selector>
Agregue el selector a su botón
<style name="srp_button" parent="@android:style/Widget.Button"> <item name="android:background">@drawable/btn_selector</item> </style>
U puede hacer una imagen gris y poner en su dibujable y añadir esto en su código.
button.setBackgroundResource(R.drawable.grey);
Fácil, simple, pero debido a usar la imagen consigue un poco más espacio.
- Android – cómo obtener android.R.anim.slide_in_right
- Android: detecta cuando ScrollView detiene el desplazamiento