我是Android开发的新手,所以请耐心等待。我的应用程序元素(按钮颜色,背景颜色,文本颜色,分隔符颜色等)使用colors.xml中的颜色,例如使用“@ color / mycolor”。
我的colors.xml看起来像:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="mycolor">#202020</color>
<color name="white">#FFFFFF</color>
<color name="whitehint">#50FFFFFF</color>
<color name="primary">#673AB7</color>
<color name="primary_dark">#512DA8</color>
<color name="primary_light">#D1C4E9</color>
<color name="accent">#794cc9</color>
<color name="primary_text">#212121</color>
<color name="secondary_text">#a4a4a4</color>
<color name="icons">#FFFFFF</color>
<color name="divider">#B6B6B6</color>
</resources>
现在我有一个菜单,用户可以选择一个不同的主题,我想使用第二个colors2.xml,例如颜色名称相同但键的十六进制代码不同。如何查看我的应用程序引用的xml文件?
答案 0 :(得分:7)
colors.xml
只是一个惯例。所有这些颜色都将被定义并可并行访问...... res/values/colors.xml
中的默认颜色和res/values-sw600dp/colors.xml
中平板电脑的颜色(文件名不重要),这可能不是您想要的。假设你有这些主题:
<style name="Theme.My.DarkRed" parent="Theme.AppCompat">
<item name="colorPrimary">#f00</item>
<item name="colorPrimaryDark">#c00</item>
<item name="colorAccent">#c90</item>
</style>
<style name="Theme.My.LightBlue" parent="Theme.AppCompat.Light">
<item name="colorPrimary">#9ff</item>
<item name="colorPrimaryDark">#6cc</item>
<item name="colorAccent">#06f</item>
</style>
现在,当你定义例如android:background="?colorAccent"
将解析适合您正在使用的主题的颜色。
注意:遗憾的是,在Lollipop之前,这些颜色attr引用无法用于XML drawables。
TypedArray a = context.obtainStyledAttributes(new int[]{R.attr.colorPrimary, R.attr.colorAccent});
int colorPrimary = a.getColor(0);
int colorAccent = a.getColor(1);
a.recycle();
android:windowBackground
android:colorForeground
android:colorBackground
android:textColorPrimary
android:textColorSecondary
colorPrimary <!-- without prefix in AppCompat, with prefix on pure Lollipop -->
colorPrimaryDark
colorPrimaryAccent
colorControlNormal
colorControlActivated
colorControlHighlight
colorButtonNormal
android:textColorHint
android:textColorLink
android:textColorHighlight
android:listDivider
等等,等等......
您可以查看Android\sdk\platforms\android-*\data\res\values\themes*.xml
和appcompat-v7来源以获取更多属性。
然后你甚至可以定义你自己的attrs(偏离主题,使用谷歌)。
答案 1 :(得分:0)
你应该看看Styles and Themes。您可以在清单中为自己的应用设置自定义主题。
<application android:theme="@style/CustomTheme">
然后当用户选择菜单选项来更改主题时,您应该以编程方式更改主题。请查看this以动态更改应用主题。