Cómo configurar el estilo de un botón en Android?
He definido los archivos siguientes en la carpeta res.
Styles_apptheme.xml
- Cómo cambiar el color de los controladores de EditText?
- EditText cómo activar copia / pegar popup sin barra de acción?
- Cómo cambiar el color de fondo alrededor de un DialogFragment?
- ¿Puedo cambiar el color de acento (AppCompat) de forma programática?
- Error al recuperar el padre del elemento: No se encontró ningún recurso que coincida con el nombre dado 'android: Theme.Material.Light'
<?xml version="1.0" encoding="utf-8"?> <!-- Generated with http://android-holo-colors.com --> <resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="ButtonAppTheme" parent="android:Widget.Holo.Light.Button"> <item name="android:background">@drawable/apptheme_btn_default_holo_light</item> </style> </resources>
Themes_apptheme.xml
<?xml version="1.0" encoding="utf-8"?> <!-- Generated with http://android-holo-colors.com --> <resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="AppTheme" parent="@style/_AppTheme"/> <style name="_AppTheme" parent="Theme.AppCompat.Light"> <item name="android:editTextBackground">@drawable/apptheme_edit_text_holo_light</item> <item name="android:buttonStyle">@style/ButtonAppTheme</item> </style> </resources>
En mi archivo Layout.xml, he definido mi botón como a continuación
<Button android:id="@+id/btnAddTitle" android:layout_below="@id/edEnterTitleValue" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/btn_AddTitle" android:layout_margin="20dp" />
Si agrego la línea abajo a la vista del botón arriba,
android:background="@style/ButtonAppTheme"
La aplicación se bloquea diciendo que se debería establecer un recurso extraíble para el atributo de fondo.
Así que he creado el siguiente archivo dibujable – abc.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_window_focused="false" android:state_enabled="true" android:drawable="@drawable/apptheme_btn_default_normal_holo_light" /> <item android:state_window_focused="false" android:state_enabled="false" android:drawable="@drawable/apptheme_btn_default_disabled_holo_light" /> <item android:state_pressed="true" android:drawable="@drawable/apptheme_btn_default_pressed_holo_light" /> <item android:state_focused="true" android:state_enabled="true" android:drawable="@drawable/apptheme_btn_default_focused_holo_light" /> <item android:state_enabled="true" android:drawable="@drawable/apptheme_btn_default_normal_holo_light" /> <item android:state_focused="true" android:drawable="@drawable/apptheme_btn_default_disabled_focused_holo_light" /> <item android:drawable="@drawable/apptheme_btn_default_disabled_holo_light" /> </selector>
Si pongo android:background="@drawable/abc"
no veo el estilo establecido en el botón.
Así que por favor, hágamelo saber cómo puedo establecer el estilo para el botón.
Gracias.
- Crear un CardView mediante programación no aplica correctamente el estilo
- ¿Cómo puedo dar un estilo en negrita en android?
- Configuración del color del encabezado de la aplicación en la vista general (aplicaciones recientes)
- Cómo heredar de un estilo especificado de una versión de api diferente
- ¿Puedo tener "adjustResize" comportamiento de teclado suave y una barra de herramientas detrás de la barra de estado al mismo tiempo?
- Diferentes estilos de colorControlActivated en Android
- Diferentes tipos de letra para Algunas actividades utilizando la Biblioteca de Caligrafía
- Cambiar el color del icono de FAB basado en estado w / compat libs
Sería bastante simple si lo haces de esta manera.
Primero crea un button_selector.xml en la carpeta drawable.
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_pressed="true" > <shape android:shape="rectangle" > <corners android:radius="5dp" /> <stroke android:width="1dip" android:color="@color/green_temp" /> <gradient android:angle="-90" android:startColor="@color/green_temp" android:endColor="@color/green_temp" /> </shape> </item> <item android:state_focused="true"> <shape android:shape="rectangle" > <corners android:radius="5dp" /> <stroke android:width="1dip" android:color="#971E05" /> <solid android:color="#58857e"/> </shape> </item> <item > <shape android:shape="rectangle" > <corners android:radius="5dp" /> <stroke android:width="1dip" android:color="@color/bright_green" /> <gradient android:angle="-90" android:startColor="@color/green_temp" android:endColor="@color/button_green" /> </shape> </item> </selector>
Añada estos colores en colors.xml de la carpeta de valores.
<!-- Green --> <color name="green_temp">#23A96E</color> <color name="green_dark">#159204</color> <color name="bright_green">#02D8B0</color> <color name="button_green">#10a54a</color>
Por último, en el botón deseado de layout.xml poner fondo desde el selector de arriba.
<Button android:id="@+id/btnAddTitle" android:layout_below="@id/edEnterTitleValue" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/btn_AddTitle" android:background="@drawable/button_selector" android:layout_margin="20dp" />
Entonces su todo hecho su botón será labrado con color que usted quiere.
Android Button Maker es una herramienta en línea para generar códigos de botones para aplicaciones de Android. La API de Android proporciona recursos extraíbles donde el archivo XML define la forma geométrica, incluidos los colores, la frontera y los degradados. Este botón está generando basado en la forma de código XML dibujable que carga más rápido comparar a los botones PNG normales. Puede personalizar las propiedades del botón en el panel de configuración y obtener el código fuente.
Compruebe este enlace Button Maker
No hay necesidad de romper el cerebro … esta herramienta lo hace sencillo
Pruebe esto como una alternativa. Crear una carpeta dibujable debajo de res entonces crea archivos del xml y copypaste debajo del código y lo intenta primero entonces usted modifica para requisitos particulares según su requisito.
Button_bg.xml
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="#00acc1"/> <stroke android:width="2dp" android:color="#ffffff"/> <corners android:radius="2dp"/> </shape>
Button_bg_pressed.xml
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="#006064"/> <stroke android:width="1dp" android:color="#ffffff"/> <corners android:radius="2dp"/> </shape>
Button_selector.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/button_bg_pressed" /> <item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/button_bg_pressed" /> <item android:drawable="@drawable/button_bg" /> </selector>
Y ahora en su botón xml establecer el fondo como button_selector.xml
<Button android:id="@+id/btnAddTitle" android:layout_below="@id/edEnterTitleValue" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/btn_AddTitle" android:background="@drawable/button_selector" android:layout_margin="20dp"/>
Esto hará el trabajo para usted. Usted puede personalizar su estilo completo del botón por esta manera.
reemplazar
android:background="@style/ButtonAppTheme"
con
style="@style/ButtonAppTheme"
Y todo está bien
Si desea tener la animación predeterminada del botón por el diseño del material y cambiar el color del botón, pruebe esto.
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="@dimen/padding_12" android:text="button text here" android:theme="@style/NavyBtn" />
En style.xml
<style name="NavyBtn" parent="Theme.AppCompat.Light"> <item name="colorButtonNormal">#020e39</item> <item name="android:textColor">#FFFFFF</item> </style>
- No es capaz de "findViewById" en Kotlin. Error de obtención "Inferencia de tipo no"
- Android reciclerview no muestra elementos