多个主题更改选项卡图标颜色

时间:2018-10-08 08:41:39

标签: android material-design android-toolbar android-theme

我一直在学习MDC from google code lab,这是一个设计精良的应用程序,用于了解材料设计的工作原理。但是,在特定部分中,他们展示了如何使用深色主题。通过更改style.xml中的主题属性来做到这一点。足智多谋,我一直在尝试学习如何使用多个主题以及如何在运行时互换它们。

由于这个原因,我避免了使用硬编码的方式,而是尝试继承基本主题并根据需要进行更改。下面我在主题文件中进行一些更改

<!--Dark Theme style !-->
<style name="Theme.Shrine.Dark" parent="Theme.Shrine">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/darkColorPrimaryDark</item>
    <item name="colorPrimaryDark">@color/darkColorPrimaryDark</item>
    <item name="colorAccent">@color/darkColorAccent</item>
    <item name="android:windowLightStatusBar" tools:targetApi="m">false</item>
    <item name="android:textColorPrimary">@color/darkTextColorPrimary</item>
    <item name="colorControlActivated">@color/darkColorControlActivated</item>
    <item name="toolBarStyle">@style/Widget.Shrine.Toolbar.Dark</item>
    <item name="appBackGroundColor">@color/darkBackgroundColor</item>
</style>

有一些更改,但是它们与我的问题无关,所以我不会在此处添加它们。无论如何,随着我的样式文件应用程序中的更改看起来像这样 enter image description here

除工具栏中的图标颜色外,所有其他内容均应提供。因此,我检查了一下代码,发现每个图标的颜色均使用android:tint="@color/toolbarIconColor"从其各自的可绘制文件中引用,并且在color.xml工具栏中,颜色为<color name="toolbarIconColor">@color/textColorPrimary</color>

在黑暗模式下显示错误的颜色,在这种情况下,如何在黑暗模式下显示黄色。我从深色主题的基本主题更改了textColoeSecondary,但没有用

1 个答案:

答案 0 :(得分:1)

首先,您需要从每个可绘制对象中删除颜色的硬性参考,这些可绘制对象根据应用程序主题反映不同的颜色。因此,在您的values目录中添加attrs.xml。并添加图标颜色的参考名称,例如

<attr name="toolbarIconColor" format="reference"/>

第二,为两个主题添加两种不同的颜色。例如,对于普通主题<color name="toolbarIconColor">@color/textColorPrimary</color>和深色主题,请使用<color name="darkToolbarIconColor">#FFCF44</color>

最后,转到您的style.xml文件并进行此更改,以与我们在attrs.xml文件中添加的引用挂钩,例如针对常规主题<item name="toolbarIconColor">@color/toolbarIconColor</item>和{{1 }}