यदि आप फोरेंसिक मूड में हैं तो यहां खोदना और पता चलाना है कि क्या हो रहा है।
android:background="?android:attr/activatedBackgroundIndicator"?
सहजता से इसका मतलब पृष्ठभूमि को कुछ आकर्षित करने के लिए सेट करना है।
लेकिन यह देखने के लिए कि हम अपने रहस्यमय चित्रकारी कैसे प्राप्त करते हैं, इसे आगे बढ़ाएं।
सटीक इसका मतलब है activatedBackgroundIndicator "क्या विशेषता के लिए पृष्ठभूमि विशेषता निर्धारित" होना करने के लिए "वर्तमान विषय में को संदर्भित करता है।
यदि आप समझते हैं" वर्तमान विषय में को संदर्भित करता है "भाग, आप मूल रूप से है सब कुछ है कि कवर के पीछे चल रहा है समझा।
असल में, activatedBackgroundIndicator एक वास्तविक drawable लेकिन एक drawable के लिए एक संदर्भ नहीं है। इसलिए जहां "activateBackgroundIndictor" वास्तव में परिभाषित विशेषता है?
+०१२३५१६४१०
यह आपकी एसडीके निर्देशिका में फ़ाइल नाम attrs.xml में परिभाषित किया गया है। उदाहरण के लिए:
path_to_android_sdk/प्लेटफ़ॉर्म/एंड्रॉइड-17/डेटा/res/values / attrs।एक्सएमएल
आपको लगता है कि फ़ाइल को खोलने के हैं, तो आप घोषणा के रूप में निम्नानुसार होगा:
<attr name="activatedBackgroundIndicator" format="reference" />
attrs.xml है जहाँ आप सभी विशेषताओं कि आप बाद में अपने दृश्य एक्सएमएल में उपयोग करने के लिए जा रहे हैं की घोषणा। ध्यान दें कि हम विशेषता और उसके प्रकार की घोषणा कर रहे हैं और वास्तव में पर कोई मान निर्दिष्ट नहीं कर रहे हैं।
वास्तविक मूल्य themes.xml में असाइन किया गया है। इस फ़ाइल पर स्थित है:
path_to_android_sdk/प्लेटफार्मों/एंड्रॉयड -17/डेटा/res/values / themes.xml
आपको लगता है कि फ़ाइल को खोलने के हैं, तो आप कई परिभाषाएं देखेंगे का उपयोग कर रहे विषय के आधार पर। उदाहरण के लिए, यहाँ के लिए विषयों का नाम विषय परिभाषाएं दी गई हैं, Theme.Light, Theme.Holo क्रमश: Theme.Holo.Light:
<item name="activatedBackgroundIndicator">@android:drawable/activated_background</item>
<item name="activatedBackgroundIndicator">@android:drawable/activated_background_light</item>
<item name="activatedBackgroundIndicator">@android:drawable/activated_background_holo_dark</item>
<item name="activatedBackgroundIndicator">@android:drawable/activated_background_holo_light</item>
अब हम हमारी रहस्यमय ड्रॉएबल है।
path_to_android_sdk/प्लेटफार्मों/एंड्रॉयड -17/डेटा/res/drawable/activated_background.xml
यदि आप खोलें: आप पहली बार एक चुनना है, यह पर drawable फ़ोल्डर में परिभाषित किया गया है उस फ़ाइल में आप ड्रॉइंग की परिभाषा देखेंगे जो समझ रहा है कि क्या हो रहा है।
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_activated="true" android:drawable="@android:drawable/list_selector_background_selected" />
<item android:drawable="@color/transparent" />
</selector>
यहाँ हम दोनों राज्यों के साथ एक drawable परिभाषित कर रहे हैं - डिफ़ॉल्ट स्थिति सिर्फ पारदर्शी पृष्ठभूमि है और यदि राज्य "state_activated" है तो हमारे drawable "list_selector_background_selected" है।
ड्रॉबल्स और राज्यों पर पृष्ठभूमि की जानकारी के लिए this link देखें।
"list_selector_background_selected" एक 9 पैच पीएनजी फ़ाइल है जो ड्रॉबल-एचडीपीआई फ़ोल्डर में स्थित है।
अब आप देख सकते हैं कि हमने सक्रिय बैकग्राउंड इंडिकेटर को संदर्भ के रूप में सीधे संदर्भित करने के बजाय संदर्भ के रूप में क्यों परिभाषित किया - यह आपको आपकी थीम के आधार पर सही ड्रॉइंग चुनने की अनुमति देता है।
एक जवाब। तो मूल रूप से यदि कोई एक ही चयनकर्ता के साथ एक्सएमएल बनाना चाहता था, तो वह अपना "सक्रिय बैकग्राउंड इंडिकेटर" बना सकता था? –
बिल्कुल - आप इसे अपने कस्टम थीम.एक्सएमएल बी/सी में एक संदर्भ विशेषता में फिर से परिभाषित कर सकते हैं। –
इस उत्तर ने मुझे यह पता लगाने में मदद की कि मेरे नेविगेशन ड्रॉवर सूची आइटम पर कस्टम ड्रायबल कैसे सेट किया जाए। – Tastybrownies