android theme using multiple colors.xml
我是android开发的新手,所以请多多包涵。我的应用程序元素(按钮颜色,背景颜色,文本颜色,分隔线颜色等)使用colors.xml中的颜色,例如使用" @ color / mycolor"。
我的colors.xml看起来像:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?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> |
现在我有了一个菜单,用户可以在其中选择一个我想使用第二个color2.xml的主题,例如,它将具有相同的颜色名称,但是按键的十六进制代码不同。我应该如何查看我的应用程序引用的XML文件?
假设您有以下主题:
1 2 3 4 5 6 7 8 9 10 11 | <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> |
现在当您定义例如
注意:可悲的是,在棒棒糖之前,这些颜色属性引用不能在XML可绘制对象中使用。
如何从XML外部访问颜色引用?
1 2 3 4 | TypedArray a = context.obtainStyledAttributes(new int[]{R.attr.colorPrimary, R.attr.colorAccent}); int colorPrimary = a.getColor(0); int colorAccent = a.getColor(1); a.recycle(); |
可以指定哪些属性?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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 |
等等,等等...
您可以查看
es\\values\\themes*.xml
然后,您甚至可以定义自己的attrs(离题,使用Google)。
您应该查看样式和主题。您可以在清单中为您的应用设置自定义主题。
1 |
然后,当用户选择菜单选项来更改主题时,您应该以编程方式更改主题。看看如何动态更改应用程序主题。