use*_*567 18 android android-ui android-layout android-theme
我很确定这个问题已经在某个地方得到了回答.这似乎太常见了.但我找不到答案.我也不能找出解决方案.
这是问题所在:
我希望我的一个TableRow具有不同的背景颜色.这很简单,我只需要添加
android:background="#123456"
Run Code Online (Sandbox Code Playgroud)
在TableRow的XML声明中.但是,我也希望我的应用程序有两个主题.在另一个主题中,TableRow应该具有不同的背景颜色.我找不到在主题中定义颜色值并使用它的方法.我想输入这样的东西:
<style name="Theme.MyApp" parent="@style/Theme.Light">
<color "my_cool_color">#123456</color>
</style>
<style name="Theme.MyApp.Dark" parent="@style/Theme.Dark">
<color "my_cool_color">#654321</color>
</style>
Run Code Online (Sandbox Code Playgroud)
并且,在TableRow的声明中:
android:background="@color/my_cool_color"
Run Code Online (Sandbox Code Playgroud)
因此,当我更改主题时,TableRow的背景颜色也会发生变化.我已经尝试了很多个小时并且没有成功......我没有尝试的一件事是基于TableRow创建我自己的小部件并为它声明一个单独的样式 - 我认为这应该有用,但它是对于这么简单的问题来说,这太重了
aro*_*ero 51
您可以使用属性执行此操作.首先定义您的属性attrs.xml(此文件位于'values'文件夹下):
<?xml version="1.0" encoding="utf-8"?>
<resources>
<attr name="myCoolColor" format="color" />
</resources>
Run Code Online (Sandbox Code Playgroud)
然后在你的styles.xml,定义myCoolColor每个主题:
<style name="Theme.MyApp" parent="@style/Theme.Light">
<item name="myCoolColor">#123456</item>
</style>
<style name="Theme.MyApp.Dark" parent="@style/Theme.Dark">
<item name="myCoolColor">#654321</item>
</style>
Run Code Online (Sandbox Code Playgroud)
现在,指定myCoolColor您的视图的背景:
android:background="?myCoolColor"
Run Code Online (Sandbox Code Playgroud)
您可以进一步使用颜色引用,以便将颜色定义在一个位置.更改属性以包含引用(请注意,我们可以使用颜色或引用):
<?xml version="1.0" encoding="utf-8"?>
<resources>
<attr name="myCoolColor" format="color|reference" />
</resources>
Run Code Online (Sandbox Code Playgroud)
更改您styles.xml的引用每个主题的颜色:
<style name="Theme.MyApp" parent="@style/Theme.Light">
<item name="myCoolColor">@color/blue</item>
</style>
<style name="Theme.MyApp.Dark" parent="@style/Theme.Dark">
<item name="myCoolColor">@color/green</item>
</style>
Run Code Online (Sandbox Code Playgroud)
最后定义你的颜色colors.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="blue">#0000FF</color>
<color name="green">#00FF00</color>
</resources>
Run Code Online (Sandbox Code Playgroud)
而已!
| 归档时间: |
|
| 查看次数: |
4580 次 |
| 最近记录: |