attr उपसर्ग के बिना, आपके colorBackground एक विशेषता हो जाता है कि आप परिभाषित करने की जरूरत है। निम्न उदाहरण जहां theme_dependent_icon
एक styles.xml
में परिभाषित किया गया है पर विचार करें:
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<declare-styleable name="custom_menu">
<attr name="theme_dependent_icon" format="reference"/>
</declare-styleable>
<style name="MyDarkTheme" parent="android:Theme" >
<item name="theme_dependent_icon">@drawable/ic_search_dark</item>
</style>
<style name="MyLightTheme" parent="android:Theme.Light" >
<item name="theme_dependent_icon">@drawable/ic_search_light</item>
</style>
</resources>
फिर, आप अपने main_activity.xml
में ?attr/theme_dependent_icon
के माध्यम से विशेषता का उपयोग कर सकते हैं:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="?attr/theme_dependent_icon" />
</LinearLayout>
इस उदाहरण में, क्योंकि मैं इस्तेमाल किया कस्टम थीम नाम MyDarkTheme
और MyLightTheme
, से पहले आपकी मुख्य गतिविधि के onCreate
के दौरान उन्हें चुना जाना चाहिए, यानी
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(R.style.MyDarkTheme); // causes ic_search_dark.png to be shown
// setTheme(R.style.MyLightTheme); // causes ic_search_light.png to be shown
setContentView(R.layout.main_activity);
}
कॉलिंग सेटथीम() रनटाइम के दौरान थीम चुनने का एक तरीका है। एक और तरीका है , values-11
, values-14
डिफ़ॉल्ट थीम के अनुरूप, एंड्रॉइड 3.0 (एपीआई -11) के लिए थीम और एंड्रॉइड 4.0 (एपीआई -14) के लिए थीम के तहत styles.xml
के कई संस्करणों को परिभाषित करना है।
स्रोत
2012-11-20 21:46:01
एंड्रॉइड के बिना उन टैग: एंड्रॉइड स्रोत में उसी res/value फ़ोल्डर में attr xml फ़ाइलों के अंदर परिभाषित किया गया प्रतीत होता है। http://android.git.kernel.org/?p=platform/frameworks/base.git;a=tree;f=core/res/res/values;hb=HEAD attrs.xml और attrs_manifest.xml I पर देखें I आपको लगता है कि आपको या तो xmlns का उपयोग करके इन्हें आयात करने की आवश्यकता है, या अपने मूल्य फ़ोल्डर में समान फाइलें जोड़ें, लेकिन मुझे सुनिश्चित करने के लिए एक्सएमएल के बारे में पर्याप्त जानकारी नहीं है। – Jems