2010-09-10 25 views
5

creé con un poco de sombra usando un estilo:botón personalizado: cambiar el estilo cuando se pulsa el botón

<style name="test"> 
    <item name="android:shadowColor">#FFFFFF</item> 
    <item name="android:shadowRadius">1</item> 
    <item name="android:shadowDx">1</item> 
    <item name="android:shadowDy">1</item> 
</style> 

Esto se aplica una sombra blanca en el texto del botón en su estado normal. Me preguntaba si alguien sabe si hay una forma de eliminar esta sombra cuando el botón está presionado. En otras palabras, ¿hay alguna manera de aplicar otro estilo cuando el botón está en otro estado (presionado)?

¡Gracias de antemano!

edición

bold.xml:

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

button.xml:

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

mi diseño:

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

Respuesta

2
+0

Este método no funciona ... ColorStateList solo me permite cambiar el color del texto en diferentes estados. Quería cambiar el estilo (por ejemplo, aumentar el tamaño del texto cuando se lo presiona o eliminar la sombra cuando se lo presiona) para diferentes estados. – user440308

+0

Esto puede hacer más que solo colores, puede hacer dibujables enteros definidos en xml, simplemente aplica el estilo a su dibujable. – schwiz

+0

Hmm. Parece que no puedo hacer que funcione. Creé un nuevo estilo llamado "negrita" y creé otro XML llamado archivo "button_test.xml" que contiene un selector con varios estados (presionado, enfocado, normal). Simplemente no estoy seguro de cómo hacer referencia a "button_test.xml" en mi diseño. – user440308

0

Después de una revisión de uno de mis archivos button.xml, encontré que el orden de evaluación (que figura en los documentos ...) fue tal que mis pruebas eligieron el mismo dibujable. Corregir el orden lo hizo funcionar.

Excepto en el caso de button2.xml. Lo hice funcionar eliminando todas las especificaciones, excepto las "dibujables" y "estado_ *". Tenía un "textColor" allí - parece que XML que pasa otras comprobaciones (como lo hace style = ".." arriba) invalida silenciosamente el selector. ¡Un buen lugar para extender la validación!

Schwiz tiene razón ... para el texto use un selector separado definido en el subdirectorio "color" de su directorio de recursos: vea ColorStateList.

Cuestiones relacionadas