Aplicar estilo diferente al botón cuando se presiona

¿Hay una manera de aplicar un estilo a un botón cuando se presiona el botón?

Si tengo un estilo en style.xml :

<resources> <style name="test"> <item name="android:textStyle">bold</item> </style> </resources> 

Un selector en button.xml :

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/test_pressed" style="@style/test" android:state_pressed="true"/> <item android:drawable="@drawable/test_focused" android:state_focused="true"/> <item android:drawable="@drawable/test_normal"/> </selector> 

Entonces ¿cómo puedo hacer referencia a button.xml en mi diseño?

 <Button ... android:???="button"/> 

¡Gracias!

Romain Guy sugiere que no es posible:

http://code.google.com/p/android/issues/detail?id=8941

"El selector funciona sólo para los elementos desplegables, no para las apariciones de texto. Actualmente no hay planes para que esto suceda".

Puede lograr esto utilizando una definición de botón XML.

Cree un archivo XML en su carpeta dibujable de la siguiente manera:

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/green_button" /> <!-- <item android:state_focused="true" android:drawable="@drawable/button_focused" /> --> <item android:drawable="@drawable/black_button" /> </selector> 

Como se puede ver esto le permite definir diferentes imágenes de botón para utilizar para los diferentes estados (black_button, green_button etc debe ser archivos .PNG en su carpeta de dibujo también)

Ahora, desde el archivo layout.xml sólo puede configurar el fondo del botón para que apunte al selector de botones:

 <Button android:text="Play" android:id="@+id/playBtn" android:background="@drawable/button_selector" android:textColor="#ffffff" /> 

El selector XML puede entonces ser referenciado de la carpeta drawable como cualquier archivo de imagen puede.

Puede hacer uso de Recursos de la lista de colores del estado

Ejemplo del enlace:

Archivo XML guardado en res / color / button_text.xml:

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:color="#ffff0000"/> <!-- pressed --> <item android:state_focused="true" android:color="#ff0000ff"/> <!-- focused --> <item android:color="#ff000000"/> <!-- default --> </selector> 

Este XML de disposición aplicará la lista de colores a una vista:

 <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/button_text" android:textColor="@color/button_text" /> 
 <Button android:background="@drawable/button"/> 

Para referirse al selector, debe darlo como fondo para ese Botón.

 <Button android:background="@drawable/button" /> 

Y para negrita cuando se presiona, no lo he probado tampoco, pero tal vez se puede mencionar el estilo de texto en su selector, iso que se refiere a un estilo de la misma:

 android:textStyle="bold" 

Si esto también no funciona, puede hacerlo en el botón onClick ().

No lo he probado, pero presumiblemente podría incluir android:id="button" en su selector.

  • El ajuste textColor de un tema falla sólo en HTC Desire HD
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.