您可以创建自己的主题属性并在应用的主题中使用它们,并允许用户在应用的主题之间切换。
attrs.xml
首先,在文件夹中创建一个文件/res/values
并定义一些主题属性:
<resources>
<attr name="myDividerColor" format="color" />
</resources>
接下来,在您的/res/values/styles.xml
(或者/res/values/themes.xml
如果您分别制作主题和样式)中制作两个主题。一个主题扩展了 Android 的深色主题,一个扩展了 Android 的浅色主题。将您的自定义属性添加到您的主题中:
<resources>
<!-- Dark theme -->
<style name="AppTheme_Dark" parent="@android:Theme.Holo">
...
<item name="myDividerColor">@color/divider_dark</item>
</style>
<!-- Light theme. -->
<style name="AppTheme_Light" parent="@android:Theme.Holo.Light">
...
<item name="myDividerColor">@color/divider_light</item>
</style>
</resources>
请注意,我使用了name="myDividerColor"
,而不是 android:name="myDividerColor"
最后,在您的活动代码中,您可以获得如下颜色:
// the attrs you want
int[] attrs = {R.attr.myDividerColor};
// get attr values for the current theme
TypedArray a = obtainStyledAttributes(attrs);
// first arg is the index of the array, in same order as attrs array above
// second arg is a default value (if not defined or not a resource)
int dividerColor = a.getColor(0, Color.TRANSPARENT);