2011-12-01 16 views
9

क्या एंड्रॉइड में पहले से ज्ञात selector एस से प्राप्त करने का कोई तरीका है?चयनकर्ता उत्तराधिकारी

मैं EditText का विस्तार करना चाहता हूं और एक कस्टम स्थिति जोड़ना चाहता हूं, अब तक मैं इसे onCreateDrawableState() विधि का उपयोग करके कर रहा हूं। जब कोई चयनकर्ता खेलता है तो डिफ़ॉल्ट चयनकर्ताओं का उपयोग करने का एक आसान तरीका है और फिर उन्हें फिर से परिभाषित करने के बजाय मेरा जोड़ना है?

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

उत्तर

4

मैं गलत समझ रहा हो सकता है, लेकिन हो सकता है आप उन्हें सिर्फ सादा प्रतिनिधि कर सकते हैं?

तो आपके मामले में आप एक कस्टम राज्य है, इसलिए यदि आप केवल मामलों को परिभाषित जहां अपने कस्टम स्थिति लागू होती यदि आप ऐसा नहीं कर सकते हैं:

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

तो यह मूल रूप से कहा गया है, राज्यों में अपने कस्टम के लिए राज्य सच है, मेरी कस्टम पृष्ठभूमि दिखाएं ... हालांकि अन्य सभी राज्यों के लिए, इस चयनकर्ता के समान व्यवहार करें। इस चयनकर्ता को अन्य राज्यों के लिए निर्देश होने के लिए ऐसा ही होता है, इसलिए उनका भी पालन करें। इसलिए कोई पुनर्वितरण नहीं है और चूंकि राज्यों का मूल्यांकन शीर्ष से नीचे क्रम में किया जाता है, इसलिए तकनीकी रूप से आपको कुछ भी फिर से परिभाषित करने की आवश्यकता नहीं होती है, आप बस बता रहे हैं कि आप केवल राज्यों के उप-समूह को परिभाषित करना चाहते हैं और इस अन्य ड्रॉबल (जो होता है) अन्य सभी सामग्री के लिए) एक और चयनकर्ता बनें। क्या यह मदद करता है?

संबंधित मुद्दे