2011-12-01 16 views
9

¿Hay alguna forma de heredar de selector s ya conocido en Android?Selector heredar

Me gustaría extender un EditText y agregué un estado personalizado, hasta ahora lo he entendido haciendo el método onCreateDrawableState(). Cuando un selector entra en juego, ¿hay alguna manera fácil de usar los selectores predeterminados y simplemente agregar el mío en lugar de definirlos de nuevo?

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res/com.my.package"> 

<item android:state_enabled="false" android:drawable="@drawable/login_textfield_bg_error" /> 
<item android:state_window_focused="false" android:drawable="@drawable/login_textfield_bg_error"> 
<item android:state_pressed="true" android:drawable="@drawable/login_textfield_bg_error" /> 
<item android:state_selected="true" android:drawable="@drawable/login_textfield_bg_error" /> 
<item app:errorBackground="@drawable/login_textfield_bg_error" /> 
</selector> 

Respuesta

4

¿Podría ser un malentendido pero tal vez simplemente puede delegar en ellos?

Así que en su caso de tener un estado de costumbre, por lo que si se define solamente los casos en que se aplica su estado personalizado no se puede hacer esto:

<selector xmlns:android="..." xmlns:app="..."> 
    <item app:custom_state="true" android:drawable="@drawable/the_one_care_about"/> 
    <item android:drawable="@android:drawable/editbox_background"/> 
</selector> 

Así que esto, básicamente, establece, para los estados donde mi personalizados state es verdadero, muestre mi fondo personalizado ... sin embargo, para todos los demás estados, compórtese igual que este selector. Este selector tiene instrucciones para otros estados, así que sígalos también. Entonces no hay redefinición y dado que los estados se evalúan en orden de arriba hacia abajo, técnicamente no tiene que redefinir nada, solo está diciendo que solo quiere definir un subconjunto de estados y delegar a este otro dibujable (lo que le sucede a ser otro selector) para el resto del contenido. ¿Esto ayuda?