多个主题更改选项卡图标颜色
Multiple themes changing tab icon color
我一直在学习MDC from google code lab,了解material设计是如何工作的,这是一个设计良好的应用程序。但是,在特定部分中,他们展示了如何使用深色主题。他们通过从 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>
有一些变化,但它们与我的问题无关,所以我不打算在这里添加它们。无论如何,随着我的样式文件应用程序的变化看起来像这样
除工具栏中的图标颜色外,一切都符合预期。所以我检查了代码,发现每个图标颜色都是从它们各自的可绘制文件中引用的 android:tint="@color/toolbarIconColor"
并且在 color.xml
中 toolbarcolor 是 <color name="toolbarIconColor">@color/textColorPrimary</color>
深色模式显示颜色错误,这种情况下如何在深色模式下显示黄色。我已将 textColoeSecondary 从深色主题的基本主题更改为但没有用
首先,您需要从每个 drawables 中删除颜色的硬引用,这些 drawables 根据应用主题反映不同的颜色。因此,在您的值目录中添加 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>
和 <item name="toolbarIconColor">@color/darkToolbarIconColor</item>
我一直在学习MDC from google code lab,了解material设计是如何工作的,这是一个设计良好的应用程序。但是,在特定部分中,他们展示了如何使用深色主题。他们通过从 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>
有一些变化,但它们与我的问题无关,所以我不打算在这里添加它们。无论如何,随着我的样式文件应用程序的变化看起来像这样
除工具栏中的图标颜色外,一切都符合预期。所以我检查了代码,发现每个图标颜色都是从它们各自的可绘制文件中引用的 android:tint="@color/toolbarIconColor"
并且在 color.xml
中 toolbarcolor 是 <color name="toolbarIconColor">@color/textColorPrimary</color>
深色模式显示颜色错误,这种情况下如何在深色模式下显示黄色。我已将 textColoeSecondary 从深色主题的基本主题更改为但没有用
首先,您需要从每个 drawables 中删除颜色的硬引用,这些 drawables 根据应用主题反映不同的颜色。因此,在您的值目录中添加 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>
和 <item name="toolbarIconColor">@color/darkToolbarIconColor</item>