如何获取Theme属性值

时间:2011-05-19 00:30:49

标签: android

是否可以从特定主题获取样式属性值而无需将主题设置为应用程序/活动? (我的意思是在调用context.setTheme(..)之前)

3 个答案:

答案 0 :(得分:42)

例如,要获取名为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();

答案 1 :(得分:2)

的JavaDoc:

  

方法TypedArray   android.content.res.Resources.Theme.obtainStyledAttributes(int[]   ATTRS)

     

返回一个TypedArray,其中包含由Theme定义的值   在attrs中列出。

     

完成阵列后,请务必致电TypedArray.recycle()

答案 2 :(得分:1)

如果你需要在xml文件中,你可以使用这样的东西:

style="?android:attr/panelTextAppearance"

例如:

<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"
    />

如果你正在使用eclipse,控制+点击该项目,看看其他可能的值(文件attrs.xml将打开)。