【问题标题】:Multiple themes changing tab icon color多个主题更改选项卡图标颜色
【发布时间】:2019-03-12 21:34:17
【问题描述】:

我一直在学习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>

有一些变化,但它们与我的问题无关,所以我不打算在这里添加它们。无论如何,随着我的样式文件应用程序的更改看起来像这样

除了工具栏中的图标颜色外,一切都是预期的。所以我检查了代码,发现每个图标颜色都是从它们各自的可绘制文件中引用的,android:tint="@color/toolbarIconColor"color.xml 工具栏颜色是&lt;color name="toolbarIconColor"&gt;@color/textColorPrimary&lt;/color&gt;

在深色模式下显示错误的颜色,在这种情况下如何在深色模式下显示黄色。我已经从深色主题的基本主题更改了 textColoeSecondary,但它不起作用

【问题讨论】:

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


    【解决方案1】:

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

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

    其次,为两个主题添加两种不同的颜色。例如,对于普通主题 &lt;color name="toolbarIconColor"&gt;@color/textColorPrimary&lt;/color&gt; 和深色主题使用 &lt;color name="darkToolbarIconColor"&gt;#FFCF44&lt;/color&gt;

    最后,转到您的 style.xml 文件并进行此更改以与我们在 attrs.xml 文件中添加的引用挂钩,例如普通主题 &lt;item name="toolbarIconColor"&gt;@color/toolbarIconColor&lt;/item&gt;&lt;item name="toolbarIconColor"&gt;@color/darkToolbarIconColor&lt;/item&gt; 的引用

    【讨论】:

      猜你喜欢
      • 2016-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多