मैं drawable my_background_drawable.xml
निम्नलिखित को परिभाषित:रंग राज्य सूची आकार Drawable में मान्यता प्राप्त नहीं
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape android:gravity="center"
android:shape="rectangle">
<solid android:color="@color/color_stateful" />
</shape>
</item>
<item android:drawable="@drawable/selector_png_drawable" />
</layer-list>
और मैं भी रंग राज्य सूची संसाधन color_stateful.xml
निम्नलिखित को परिभाषित:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true" android:color="#FF00ff00"/>
<item android:color="#FFff0000"/>
</selector>
जब मैं एक पृष्ठभूमि के रूप में my_background_drawable
दिए गए सेट कुछ दृश्यों के लिए मैं अपने आकार के लिए color_stateful.xml
में परिभाषित रंग में कोई भी परिवर्तन नहीं देख सकता, जबकि दृश्य स्थिति वास्तव में बदल जाती है (selector_png_drawable.xml
एक संकेतक है)।
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- This doesn't work
<item>
<shape android:gravity="center"
android:shape="rectangle">
<solid android:color="@color/color_stateful" />
</shape>
</item>
-->
<item>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape android:gravity="center"
android:shape="rectangle">
<solid android:color="#FF00ff00" />
</shape>
</item>
<item>
<shape android:gravity="center"
android:shape="rectangle">
<solid android:color="#FFff0000" />
</shape>
</item>
</selector>
</item>
<item android:drawable="@drawable/selector_png_drawable"" />
</layer-list>
तो यह सच है कि रंग राज्य सूचना जब ColorStateList
संसाधन एक ShapeDrawable
भीतर प्रयोग किया जाता है खो दिया है या मैं इसे कर रहा हूँ है:
हालांकि सब कुछ जब मैं निम्नलिखित तरीके से मेरी my_background_drawable.xml
संशोधित ठीक है गलत?
एंड्रॉइड लॉलीपॉप के रूप में, यह अब सत्य नहीं है और 'ColorStateList' सही ढंग से पार्स किया गया है। – keyboardr
यह पुष्टि कर सकता है कि यह लॉलीपॉप में काम करता है - वास्तव में उलझन में था कि मेरा <21 टेस्ट डिवाइस ठीक से काम क्यों नहीं कर रहा था! – Tom
प्री-लॉलीपॉप उपकरणों के लिए स्पष्ट (और भयानक) विकल्प है क्योंकि राज्य हैं क्योंकि 'राज्य हैं, प्रत्येक व्यक्ति केवल उनके '' 'रंग' विशेषता से भिन्न होता है, और मूल' ' को आकर्षित करता है प्रत्येक '' संदर्भित 'स्टेटलिस्ट ड्रायबल'। '' तत्वों (कोई हार्ड-कोडेड मान) के अंदर केवल संसाधन संदर्भों का उपयोग करके चीज़ की अत्याचार को थोड़ा कम किया जा सकता है, और किसी को '''' drawable-v21' निर्देशिका में रखा जा सकता है (संभवतः पूरी तरह से बाद में स्विच करें)। _blargh_ –
desseim