Android的 - 如何指定特殊的属性,在不同主题的一些具体的看法(Android - how t

2019-10-20 02:20发布

我的工作在我的应用程序(明暗)的“动态变化的主题”功能。

我有使用特殊的颜色有些特别定制的小部件。 而且我也想说明这个小部件主题属性的颜色。

例如,我想在主题设置属性一样

<item name="MySpecialTextColor">@color/white</item>

在布局,我怎么可以设置TextView的文本颜色?

<TextView
...
android:color="XXXX????"
...
/>

我怎样才能做到这一点?

Answer 1:

首先,定义两种颜色/res/values/colors.xml

<resources>
    <!-- ActionBar-->
    <color name="MySpecialTextColorLight">@color/white</color>
    <color name="MySpecialTextColorDark">@color/black</color>
<resources>

然后定义在一个独特的名称的属性/res/values/attrs.xml

<resources>
    <attr name="mytheme_text_color" format="color"/>
</resources>

接下来,在你的两个主题,该属性定义值,如:

<resources>
    <style name="MyTheme" parent="android:Theme">
        <item name="mytheme_text_color">@color/MySpecialTextColorDark</item>
    </style>

    <style name="MyTheme.Light" parent="android:Theme.Light">
        <item name="mytheme_text_color">@color/MySpecialTextColorLight</item>
    </style>
</resources>

最后,使用参考属性定义来指代这些颜色。 在你的情况,你可以使用:

<TextView
    ...
    android:color="?attr/mytheme_text_color"
    .../>


文章来源: Android - how to specify special attribute to some specific view in different theme