将颜色值保存在主题变量中并在 activity xml 中引用它们?
Save color values in theme variables and reference them in activity xml?
我想提供不同的应用主题供我的用户选择。每个主题都有两个变量 Color1 和 Color2,我的想法是在活动中引用这些颜色 xml。
类似于:
<style name="Theme.LightTheme" parent="Theme.General">
<item name="android:color1">#000000</item>
<item name="android:color2">#ffffff</item>
</style>
然后在 activity xml:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="?android:color1"
android:background="?android:color2" />
所以当主题改变时,活动中的颜色也会改变。
如何做到这一点?
您可以定义自己的属性。大多数人在 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" />
我想提供不同的应用主题供我的用户选择。每个主题都有两个变量 Color1 和 Color2,我的想法是在活动中引用这些颜色 xml。
类似于:
<style name="Theme.LightTheme" parent="Theme.General">
<item name="android:color1">#000000</item>
<item name="android:color2">#ffffff</item>
</style>
然后在 activity xml:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="?android:color1"
android:background="?android:color2" />
所以当主题改变时,活动中的颜色也会改变。
如何做到这一点?
您可以定义自己的属性。大多数人在 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" />