यदि आप यहां एक फोरेंसिक मूड में हैं तो खुदाई कैसे करें और पता करें कि क्या चल रहा है।
android:background="?android:attr/activatedBackgroundIndicator"?
वास्तव में इसका मतलब है कि पृष्ठभूमि को कुछ ड्रॉबल के लिए सेट करें।
लेकिन यह देखने के लिए कि हम अपने रहस्यमय ड्रॉबल को कैसे प्राप्त करते हैं, इसे और विघटित करते हैं।
सटीक होने का मतलब है कि "पृष्ठभूमि को सेट करें विशेषता" सक्रियबैकग्राउंडइंडिएटर "को क्या कहते हैं" वर्तमान विषय में संदर्भित करता है ।
यदि आप समझते हैं "वर्तमान विषय में संदर्भित करता है" भाग, तो आप मूल रूप से कवर के पीछे चल रही हर चीज को समझ गए हैं।
असल में, ActiveBackgroundIndicator वास्तविक ड्रॉबल नहीं है , बल्कि ड्रॉबल का एक संदर्भ है । तो वास्तव में "ActivBackgroundIndictor" विशेषता कहाँ परिभाषित है?
यह एक फ़ाइल नाम attrs.xml में अपने एसडीके निर्देशिका में परिभाषित किया गया है । उदाहरण के लिए:
path_to_android_sdk / प्लेटफार्मों / Android-17 / डेटा / Res / मान / attrs.xml
यदि आप उस फ़ाइल को खोलते हैं, तो आप निम्नानुसार घोषणा करेंगे:
<attr name="activatedBackgroundIndicator" format="reference" />
attrs.xml वह जगह है जहाँ आप उन सभी विशेषताओं को घोषित करते हैं जिन्हें आप बाद में अपने दृश्य xml में उपयोग करने जा रहे हैं। ध्यान दें कि हम विशेषता और उसके प्रकार की घोषणा कर रहे हैं और वास्तव में यहाँ कोई मान निर्दिष्ट नहीं कर रहे हैं ।
वास्तविक मान theme.xml में असाइन किया गया है । यह फ़ाइल यहां स्थित है:
path_to_android_sdk / प्लेटफ़ॉर्म / एंड्रॉइड -17 / डेटा / रेस / वैल्यू / थीम.एक्सएमएल
यदि आप उस फ़ाइल को खोलते हैं, तो आप जिस विषय का उपयोग कर रहे हैं, उसके आधार पर आपको कई परिभाषाएँ दिखाई देंगी । उदाहरण के लिए, यहाँ थीम नाम, थीम.लाइट, थीम.होल, थीम के लिए परिभाषाएँ दी गई हैं।
<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 / प्लेटफार्मों / Android-17 / डेटा / res / drawable / active_background.xml
यदि आप उस फ़ाइल को खोलते हैं तो आपको ड्रॉबल की परिभाषा दिखाई देगी जो समझना महत्वपूर्ण है कि क्या चल रहा है।
<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>
यहां हम दो राज्यों के साथ एक ड्रॉबल को परिभाषित कर रहे हैं - डिफ़ॉल्ट राज्य सिर्फ पारदर्शी पृष्ठभूमि है और यदि राज्य "राज्य_सक्रिय" है, तो हमारा ड्रॉबल "list_selector_background_selected" है।
देखने के लिए इस लिंक पर ड्रॉएबल और राज्यों पर पर पृष्ठभूमि जानकारी के लिए।
"list_selector_background_selected" एक 9 पैच png फ़ाइल है जो कि drawable-hdpi फ़ोल्डर में स्थित है।
अब आप देख सकते हैं कि हमने क्यों सक्रिय किया गया BackgroundIndicator को एक संदर्भ के रूप में ड्रॉएबल फ़ाइल से सीधे लिंक करने के बजाय परिभाषित किया - यह आपको अपनी थीम के आधार पर सही ड्रॉबल चुनने की अनुमति देता है।