Cómo configurar el estilo de un botón en Android?

He definido los archivos siguientes en la carpeta res.

Styles_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="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.

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> 
  • Establecer un tema coherente para todos los editTexts en Android
  • DatePicker con un fondo
  • Android Studio: ¿Cómo mover rápidamente el estilo de layout.xml a style.xml?
  • No se puede eliminar la barra de título en Actividad
  • Usar la etiqueta <include> con? Attr / myAttr
  • Android TimePickerDialog guía de estilo / docs?
  • Creación de estilos-v21.xml
  • EditText cómo activar copia / pegar popup sin barra de acción?
  • El estilo de barra de acción hace que la barra de acciones desaparezca
  • ¿Es posible heredar o extender un estilo de un atributo personalizado?
  • No se puede cambiar el color del texto con la barra desplegable de la barra de acciones de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.