2011-05-19 22 views
27

क्या थीम/गतिविधि तक विषय सेट किए बिना विशेष थीम से स्टाइल विशेषता मान प्राप्त करना संभव है? थीम विशेषता मान कैसे प्राप्त करें

+0

किसी भी दिलचस्पी के लिए मुझे अपने आप से समाधान मिला :) – Kid24

+1

टाइपेडएरे एक = getTheme()। प्राप्त स्टाइल एट्रिब्यूट्स (आर। स्टाइल .मेनाम, नया int [] {R.attr.attribute_name}); – Kid24

+0

int विशेषताResourceId = a.getResourceId (0, 0); – Kid24

उत्तर

39

उदाहरण के लिए (मैं context.setTheme(..) लागू करने से पहले मतलब), MyTheme नामक एक विषय के editTextColor विशेषता के मूल्य प्राप्त करने के:

TypedArray a = getTheme().obtainStyledAttributes(
     R.style.MyTheme, 
     new int[] { R.attr.editTextColor }); 

// Get color hex code (eg, #fff) 
int intColor = a.getColor(0 /* index */, 0 /* defaultVal */); 
String hexColor = Integer.toHexString(intColor); 

// Don't forget to recycle 
a.recycle(); 
+2

... और यदि आप थीम प्राप्त करने का कोई तरीका ढूंढ रहे हैं शैली संसाधन आईडी गतिशील रूप से यहां देखें: http://stackoverflow.com/a/9537629/317889 – HGPB

+2

आपको ['a.recycle()'] (http://developer.android.com/reference/android/content/ res/TypedArray.html # रीसायकल()) जब आप टाइप किए गए ऐरे के साथ होते हैं। – ayke

2

JavaDoc:

विधि TypedArray android.content.res। संसाधन .me.obtainStyledAttributes (int[] attrs)

आर TypedArray को थीम द्वारा परिभाषित मानों को धारण करना जो एटर्स में सूचीबद्ध हैं।

जब आप सरणी के साथ किए जाते हैं तो TypedArray.recycle() पर कॉल करना सुनिश्चित करें।

style="?android:attr/panelTextAppearance" 
उदाहरण के लिए

:

1

अगर आप इसे xml फ़ाइल में की जरूरत है, तो आप कुछ इस तरह का उपयोग कर सकते

<TextView 
    style="?android:attr/panelTextAppearance" 
    android:paddingTop="?android:attr/paddingTop" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/your_text" 
    /> 

आप उपयोग कर रहे हैं ग्रहण, नियंत्रण + पर क्लिक करें आइटम, अन्य संभावित मान देखने के लिए (एक फ़ाइल attrs.xml खुल जाएगा)।

संबंधित मुद्दे