2011-04-04 12 views
5

Hice una imagen personalizada de 9 parches para el fondo de mi botón. Los botones están en drawable-hdpi y drawable-mdpi folder. Creé un archivo de selector personalizado para mis estados de botón.¿Por qué los estados de los botones personalizados no funcionan?

archivo

selector de login_button.xml:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!-- Image display in background in select state --> 
    <item android:state_pressed="true" android:drawable="@drawable/login_button_down" /> 

    <!-- Image display in background in select state --> 
    <item android:state_focused="true" android:drawable="@drawable/login_button_down" /> 

    <!-- Default state --> 
    <item android:drawable="@drawable/login_button" /> 
</selector> 

Entonces hice un archivo styles.xml a medida para el estilo de botón:

<style name="login_button_style" parent="@android:style/Widget.Button"> 
     <item name="android:gravity">center_vertical|center_horizontal</item> 
     <item name="android:textColor">#FF000000</item> 
     <item name="android:shadowColor">#FFFFFFFF</item> 
     <item name="android:shadowDx">0</item> 
     <item name="android:shadowDy">1</item> 
     <item name="android:shadowRadius">0.2</item> 
     <item name="android:textSize">13dp</item> 
     <item name="android:textStyle">bold</item> 
     <item name="android:background">@drawable/login_button</item> 
     <item name="android:focusable">true</item> 
     <item name="android:clickable">true</item> 
    </style> 

luego se aplica este estilo a mi archivo de tema en themes.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="customTheme" parent="@android:style/Theme.NoTitleBar" > 
     <item name="android:editTextStyle">@style/login_edittext_style</item> 
     <item name="android:buttonStyle">@style/login_button_style</item> 
     <item name="android:textViewStyle">@style/login_textview_style</item> 
    </style> 
</resources> 

Y, por último añadido propio botón para el archivo de diseño:

<Button 
    android:text="@string/login_text" 
    android:id="@+id/buttonSignIn" 
    android:layout_width="130dp" 
    android:layout_height="wrap_content"> 
</Button> 

Pero si hago clic en el botón, la imagen de fondo no cambia. El código está bien y todo compila muy bien. Sé que tengo la misma imagen para dos estados diferentes, pero no funciona ni siquiera para un estado en emulador. ¿Alguien puede señalarme dónde está el problema?

EDIT:

estado Obviamente normal se trabaja, ya que recibe su imagen desde un archivo XML de selección. Ahora me pregunto por qué los otros estados no son ...

+0

Si coloca el '' login_button' como androide: o de fondo Cómo funciona? – Macarse

+0

@Macarse No. Agregado al botón android: background = "@ drawable/login_button", incluso trató de comentar el estilo del botón en themes.xml - resultado 0. – evilone

+0

¿Es este un estilo o un tema? ¿Y cómo lo aplica a su botón o actividad? –

Respuesta

5

Pensé que tal vez tenía algo que ver con la nomenclatura, así que nombré las imágenes de estado del botón con un nombre diferente al de login_button, porque el archivo selector xml tiene el mismo nombre. Y edité mi archivo selector xml también.

archivo XML de selección:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!-- Image display in background in select state --> 
    <item android:state_pressed="true" android:drawable="@drawable/login_btn_down" /> 

    <!-- Image display in background in select state --> 
    <item android:state_focused="true" android:drawable="@drawable/login_btn_down" /> 

    <!-- Default state --> 
    <item android:drawable="@drawable/login_btn" />  
</selector> 
Cuestiones relacionadas