我想提供不同的应用主题供我的用户选择。每个主题都有两个变量Color1和Color2,我的想法是在活动xml中引用这些颜色。
类似的东西:
<style name="Theme.LightTheme" parent="Theme.General">
<item name="android:color1">#000000</item>
<item name="android:color2">#ffffff</item>
</style>
然后在xml:
活动中 <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="?android:color1"
android:background="?android:color2" />
因此,当主题被更改时,活动中的颜色会发生变化。
如何做到这一点?
答案 0 :(得分:1)
您可以定义自己的属性。大多数人都在res/values/attrs.xml
中执行此操作:
<resources>
<attr name="color1" format="color" />
<attr name="color1" format="color" />
</resources>
然后在你的风格中,你可以参考你创建的属性(注意那里没有android:
前缀):
<style name="Theme.LightTheme" parent="Theme.General">
<item name="color1">#000000</item>
<item name="color2">#ffffff</item>
</style>
现在在你的布局XML文件中,你引用当前主题的属性值(再次注意缺少android:
前缀):
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="?attr/color1"
android:background="?attr/color2" />