dor*_*uck 18 android android-theme
我确信有一个简单的答案,但我无法找到它所以我把它扔进stackoverflow ...... ;-)
我将把它作为一个例子.我有一个Android应用程序,用户可以在首选项中选择主题 - 深色或浅色主题.根据所选主题,我必须在我的应用程序中调整20种颜色.所以我希望我可以在主题中定义颜色,然后在我的TextViews等中使用这些如此定义的颜色的名称.但到目前为止,我无法弄清楚如何做到这一点,在这里和那里找不到任何解决方案.我真的不想为这20种颜色中的每种颜色定义一个额外的黑暗和浅色样式,但到目前为止这似乎是我能找到的唯一解决方案.
非常感谢任何提示
马丁:
更新:
在伪语法中,这就是我正在寻找的.可能吗?
<style name="AppTheme.MyDark" parent="android:Theme">
-?-> titleColor = "#ffffff"
-?-> introColor = "#ffaaaa"
</style>
<style name="AppTheme.MyLight" parent="android:Theme.Light">
-?-> titleColor = "#000000"
-?-> introColor = "#004444"
</style>
<TextView
android:id="@+id/quoteTitle"
android:textColor=@titleColor
...
</TextView>
<TextView
android:id="@+id/quoteIntro"
android:textColor=@introColor
...
</TextView>
Run Code Online (Sandbox Code Playgroud)
dor*_*uck 62
我找到了一个似乎有用的解决方案.首先,您需要在attr.xml中定义自定义颜色字段
<?xml version="1.0" encoding="utf-8"?>
<resources>
<attr name="titleColor" format="reference|color" />
<attr name="introColor" format="reference|color" />
</resources>
Run Code Online (Sandbox Code Playgroud)
接下来,您将定义主题
<style name="AppTheme.MyDark" parent="android:Theme">
<item name="titleColor">#FFFFFF</item>
<item name="introColor">#FFFFFF</item>
</style>
<style name="AppTheme.MyLight" parent="android:Theme">
<item name="titleColor">#000000</item>
<item name="introColor">#004444</item>
</style>
Run Code Online (Sandbox Code Playgroud)
最后在你的布局
<TextView
android:id="@+id/quoteTitle"
android:textColor="?titleColor"
...
</TextView>
<TextView
android:id="@+id/quoteIntro"
android:textColor="?introColor"
...
</TextView>
Run Code Online (Sandbox Code Playgroud)
我主要在这里找到解决方案
在官方的android文档中似乎没有关于使用属性的解释.我找到的最佳资源就在这里
| 归档时间: |
|
| 查看次数: |
7511 次 |
| 最近记录: |