मैं अपने आवेदन के लिए 2 चयन योग्य विषय रखना चाहता हूं। ऐसा करने के लिए, मैंने कुछ विशेषताओं को परिभाषित किया, जैसे:
<attr format="color" name="item_background" />
फिर, मैंने दोनों थीम बनाई, जैसे:
<style name="ThemeA">
<item name="item_background">#123456</item>
</style>
<style name="ThemeB">
<item name="item_background">#ABCDEF</item>
</style>
यह विधि महान काम करती है, जिससे मुझे कई थीम आसानी से बनाने और संशोधित करने की अनुमति मिलती है। समस्या यह है कि ऐसा लगता है कि इसका उपयोग केवल Views में ही किया जा सकता है, न कि Drawables में ।
उदाहरण के लिए, एक लेआउट के अंदर एक दृश्य से एक मूल्य का संदर्भ देते हुए काम करता है:
<TextView android:background="?item_background" />
लेकिन एक ड्रा करने योग्य में ही कर रहा है:
<shape android:shape="rectangle">
<solid android:color="?item_background" />
</shape>
एप्लिकेशन चलाते समय मुझे यह त्रुटि मिलती है:
java.lang.UnsupportedOperationException: Can't convert to color: type=0x2
अगर इसके बजाय ?item_background
मैं हार्डकोड कलर का उपयोग करता हूं, तो यह काम करता है, लेकिन यह मुझे अपने विषयों का उपयोग करने की अनुमति नहीं देता है। मैंने भी कोशिश की ?attr:item_background
, लेकिन ऐसा ही होता है।
मैं ये कैसे करूं? और यह व्यूज में क्यों नहीं बल्कि ड्रॉबल्स में काम करता है? मैं इस सीमा को प्रलेखन में कहीं भी नहीं ढूँढ सकता ...