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> 
  • Crear un botón en 3D en forma de android
  • Barra de herramientas de Android: texto de título pequeño en modo horizontal
  • Cambiar el tema de diseño predeterminado a color personalizado?
  • Android TimePickerDialog guía de estilo / docs?
  • Android styles.xml windowNoTitle (ActionBarActivity)
  • Usar dimensiones en estilo personalizado
  • Pantalla completa en personalizar tema
  • Android ProgressBar estilo como vista de progreso en SwipeRefreshLayout
  • Diseño del material: ¿Dónde colocar la elevación en los estilos android?
  • No se puede eliminar la barra de título en Actividad
  • Android: Añadir divisor entre los elementos de RecyclerView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.