मैं थीम और शैलियों से विशेषता मान पढ़ने की कोशिश कर रहा हूं जो प्लेटफ़ॉर्म के लिए डिज़ाइन किए गए थे जो कि मैं अपना आवेदन चला रहा हूं उससे नया।पुराने प्लेटफ़ॉर्म पर नए थीम विशेषताओं को पढ़ें
कृपया क्यों न पूछें। यदि आप लिखने वाले पुस्तकालयों के बारे में कुछ भी जानते हैं तो आपको पहले से ही पता होना चाहिए कि मैं मंच की क्षमताओं को धक्का देना चाहता हूं :)
मैं अनुमान के तहत परिचालन कर रहा हूं कि जब एंड्रॉइड शैलियों को संकलित किया जाता है तो विशेषता स्थिरांक का उपयोग किया जाता है चाबियों के लिए और इसलिए सैद्धांतिक रूप से किसी भी मंच पर किसी भी मंच पर पढ़ा जा सकता है। मैंने जो कुछ भी परेशानी के साथ अपने अन्य पुस्तकालयों में लेआउट एक्सएमएल के साथ ऐसा होने के लिए देखा है।
यहां एक बेस टेस्ट केस है जो समस्या दिखाता है। इसे एंड्रॉइड 3.0+ का उपयोग करके संकलित किया जाना चाहिए।
<resources>
<style name="Theme.BreakMe">
<item name="android:actionBarStyle">@style/Widget.BreakMe</item>
</style>
<style name="Widget.BreakMe" parent="android:Widget">
<item name="android:padding">20dp</item>
</style>
</resources>
तथ्य यह है कि इस android:actionBarStyle
विशेष रूप से उपयोग करता irreleveant है। यह सब समझा जाना चाहिए कि यह एक विशेषता है जो केवल एंड्रॉइड 3.0 के साथ शुरू हो रही थी।
एंड्रॉइड 3.0 से पहले प्लेटफार्म पर अब तक इन मानों तक पहुंचने का प्रयास करने का तरीका है।
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Break Me"
style="?android:attr/actionBarStyle"
/>
और
<declare-styleable name="Whatever">
<item name="datStyle" format="reference" />
</declare-styleable>
<style name="Theme.BreakMe.Take2">
<item name="datStyle">?android:attr/actionBarSize</item>
</style>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Break Me"
style="?attr/datStyle"
/>
और
TypedValue outValue = new TypedValue();
context.getTheme().resolveAttribute(android.R.attr.actionBarStyle, outValue, true);
और
int[] Theme = new int[] { android.R.attr.actionBarSize };
int Theme_actionBarSize = 0;
TypedArray a = context.obtainStyledAttributes(attrs, Theme);
int ref = a.getResourceId(Theme_actionBarSize, 0);
और
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ActionBar, android.R.attr.actionBarStyle, 0);
वे सब के सब LogCat में परिणामस्वरूप यह त्रुटि उत्पन्न:
E/ResourceType(5618): Style contains key with bad entry: 0x010102ce
0x010102ce
निरंतर जो इंगित करने के लिए मंच विशेषता को खारिज किया जाता है इससे पहले कि मैं भी उपयोग करने के लिए एक मौका मिल सकता है लगता है android.R.attr.actionBarStyle
की विशेषता मान है इसके मूल्य।
मैं थीम से इस तरह के गुण पढ़ने के लिए किसी अन्य तरीके की तलाश में हूं। मुझे पूरा यकीन है कि एक बार जब मैं शैली संदर्भ प्राप्त कर लेता हूं तो मुझे इसके गुणों को पढ़ने में परेशानी नहीं होगी।
क्या ऐसा करने का कोई संभावित तरीका है?
इस में इतनी अच्छी तरह से खोदने के लिए धन्यवाद। –
लिटिल ओटी, आप ResourceTypes.cpp को देखने के लिए कैसे जानते/सोचते थे? मैं आपके द्वारा उत्तर दिए गए कई प्रश्नों को देखता हूं @ कॉमन्सवेयर, इसलिए मैं आपको एंड्रॉइड विशेषज्ञ के रूप में सोचने के इच्छुक हूं। –
@ रेडियोक्ट 1ve: मैंने शायद त्रुटि संदेश पाठ पर खोज की है। – CommonsWare