Cómo configurar el estilo de un botón en Android?
He definido los archivos siguientes en la carpeta res.
Styles_apptheme.xml
- ¿Puede utilizar xmlns en los estilos para definir el radio de la esquina cardView?
- Evitar que la actividad "Diálogo" interactúe con la actividad de fondo al hacer clic fuera de los límites
- Appcompat_v7: Error al recuperar el padre del elemento: No se encontró ningún recurso que coincida con el nombre dado
- Programáticamente set android: windowIsTranslucent
- Cómo dar al usuario la posibilidad de cambiar entre diferentes colores skin en tu aplicación
<?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.
- Deshabilitar ondulación de material en Tablayout
- Cambio de color de texto de la barra de herramientas de Lollipop
- ActionBar menuitem color de fondo presionado
- Datepicker con estilo diferente a la actividad
- Usar dimensiones en estilo personalizado
- ¿Cómo hacer transparente AppCompat estilo?
- Superposición de la barra de acción no funciona
- Cómo cambiar el color del teclado virtual "Enter" / "Siguiente" botón en lollipop
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