我的工作在我的应用程序(明暗)的“动态变化的主题”功能。
我有使用特殊的颜色有些特别定制的小部件。 而且我也想说明这个小部件主题属性的颜色。
例如,我想在主题设置属性一样
<item name="MySpecialTextColor">@color/white</item>
在布局,我怎么可以设置TextView的文本颜色?
<TextView
...
android:color="XXXX????"
...
/>
我怎样才能做到这一点?
我的工作在我的应用程序(明暗)的“动态变化的主题”功能。
我有使用特殊的颜色有些特别定制的小部件。 而且我也想说明这个小部件主题属性的颜色。
例如,我想在主题设置属性一样
<item name="MySpecialTextColor">@color/white</item>
在布局,我怎么可以设置TextView的文本颜色?
<TextView
...
android:color="XXXX????"
...
/>
我怎样才能做到这一点?
首先,定义两种颜色/res/values/colors.xml
:
<resources>
<!-- ActionBar-->
<color name="MySpecialTextColorLight">@color/white</color>
<color name="MySpecialTextColorDark">@color/black</color>
<resources>
然后定义在一个独特的名称的属性/res/values/attrs.xml
:
<resources>
<attr name="mytheme_text_color" format="color"/>
</resources>
接下来,在你的两个主题,该属性定义值,如:
<resources>
<style name="MyTheme" parent="android:Theme">
<item name="mytheme_text_color">@color/MySpecialTextColorDark</item>
</style>
<style name="MyTheme.Light" parent="android:Theme.Light">
<item name="mytheme_text_color">@color/MySpecialTextColorLight</item>
</style>
</resources>
最后,使用参考属性定义来指代这些颜色。 在你的情况,你可以使用:
<TextView
...
android:color="?attr/mytheme_text_color"
.../>