2011-12-01 18 views
9

Android'de zaten bilinen selector s miras kalmanın bir yolu var mı?Seçici devral

EditText ürününü genişletmek ve özel bir durum eklemek istiyorum, şu ana kadar onCreateDrawableState() Yöntemini kullanarak anladım. Bir seçici devreye girdiğinde, varsayılan seçicileri kullanmanın ve onları tekrar tanımlamak yerine sadece mayın eklemenin kolay bir yolu var mı?

<?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> 

cevap

4

Yanlış anlaşılma olabilir, ancak belki de onlara delege atabilirsiniz?

Yani sizin durumda özel bir durumu var, bu yüzden özel durum geçerlidir nerede sadece durumlarda tanımlamak eğer bunu yapamaz:

<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> 

Yani bu temelde devletlerin benim özel için, devletler devlet doğrudur, özel arka planımı gösterir ... ancak diğer tüm devletler için bu seçici ile aynı davranır. Bu seçici sadece diğer devletlere yönelik talimatlar alır, dolayısıyla onları da takip edin. Yani yeniden tanımlama yoktur ve devletler aşağıdan yukarıya doğru sırayla değerlendirildiklerinden, teknik olarak hiçbir şeyi yeniden tanımlamak zorunda değilsiniz, sadece devletlerin bir alt kümesini tanımlamak ve bu diğer çekilişe delege etmek istediğinizi belirtirsiniz. Diğer tüm içerikler için başka bir seçici ol. Bu yardımcı olur mu?