我有两种基于全息的 ABS 样式,Purple 和 Lime,用户可以从设置中设置主题。
在我的布局中,我有一个带有自定义 textAppearance 的 TextView,我想根据活动样式更改该 textAppearance。
(如果激活了紫色主题,则文本必须为白色,如果激活了石灰主题,则文本必须为石灰)
有没有办法从 XML 做到这一点?
编辑
如果标题具有误导性,我很抱歉。
我有两种基于全息的 ABS 样式,Purple 和 Lime,用户可以从设置中设置主题。
在我的布局中,我有一个带有自定义 textAppearance 的 TextView,我想根据活动样式更改该 textAppearance。
(如果激活了紫色主题,则文本必须为白色,如果激活了石灰主题,则文本必须为石灰)
有没有办法从 XML 做到这一点?
编辑
如果标题具有误导性,我很抱歉。
(如果激活了紫色主题,则文本必须为白色,如果激活了石灰主题,则文本必须为石灰)
试试看:
<style name="PurpleTheme" parent="...">
<!-- define the style for the text appearance here. Following is an example -->
<item name="android:textAppearance">@style/MyWhiteText</item>
</style>
<style name="LimeTheme" parent="...">
<!-- define the style for the text appearance here. Following is an example -->
<item name="android:textAppearance">@style/MyLimeText</item>
</style>
<style name="MyWhiteText" parent="@android:style/TextAppearance">
<item name="android:textColor">@color/white</item>
</style>
<style name="MyWhiteText" parent="@android:style/TextAppearance">
<item name="android:textColor">@color/lime</item>
</style>
或者,如果您不想为所有TextView 设置颜色,请执行以下操作:
声明一个属性:
<attr name="myTextViewColor" format="reference" />
在您的主题中像这样使用它:
<style name="PurpleTheme" parent="...">
<item name="myTextViewColor">@color/white</item>
</style>
<style name="LimeTheme" parent="...">
<item name="myTextViewColor">@color/lime</item>
</style>
现在您可以像这样设置特定 TextView 的颜色:
<TextView
android:textColor="?attr/myTextViewColor"
[...] />