【问题标题】:android - Change MaterialToolbar menu items icon colorandroid - 更改 MaterialToolbar 菜单项图标颜色
【发布时间】:2020-06-30 15:31:30
【问题描述】:

我目前正在创建一个应用程序,它有一个 MaterialToolbar 小部件。我想将图标颜色设置为白色。 我尝试按照this question 中接受的答案进行操作,但是它不起作用。在styles.xml 中添加colorControlNormal 不起作用。

这是我的 MaterialToolbar xml 代码:

<com.google.android.material.appbar.MaterialToolbar
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/topToolbar"
            android:background="@color/colorPrimaryDark"
            app:title="Revo"
            app:titleTextColor="@android:color/white"
            app:menu="@menu/menu_floatingsearchview"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

我能做什么?

编辑、解决方案和解释

感谢大家的精彩回答。我设法找到了一个解决方案,其中包括解决方案和另一个问题。

this 问题中,有人问为什么colorControlNormal 不起作用。接受的答案是在向量行中,您必须更改给定android:fillColor 的值,并将其替换为?attr/colorControlNormal。执行此技巧,项目 colorControlNormal,将控制所需的图标颜色。

在应用的ma​​in样式中,需要放入:

&lt;item name="colorControlNormal"&gt;@android:color/white&lt;/item&gt;

然后,在想要的图标中,你需要把path下:

android:fillColor="?attr/colorControlNormal"

就是这样!现在图标将获得赋予 colorControlNormal 属性的颜色!

【问题讨论】:

  • 您指的是哪些图标?检查stackoverflow.com/questions/58074174/…
  • @GabrieleMariotti 我指的是工具栏右侧的两个图标,包含在一个名为 menu_floatingsearchview 的菜单 xml 文件中。我必须用菜单代码更新线程吗?

标签: android android-toolbar android-xml android-theme material-components-android


【解决方案1】:

你可以使用:

    <com.google.android.material.appbar.MaterialToolbar
        app:menu="@menu/toolbar_menu"
        style="@style/Widget.MaterialComponents.Toolbar.Primary
        android:theme="@style/MyThemeOverlay_Toolbar"
        .../>

与:

<style name="MyThemeOverlay_Toolbar" parent="ThemeOverlay.MaterialComponents.Toolbar.Primary">
    <!-- color used by navigation icon and overflow icon -->
    <item name="colorOnPrimary">@color/....</item>
</style>

【讨论】:

  • 由于某种原因,这似乎不起作用。这是大多数开发人员使用的另一种方法,由许多人提出。但这一个根本行不通……
  • @Meltix 你的应用主题是什么?您使用的是 Material Components 主题吗?
  • 这是我的应用主题:
  • @Meltix 您使用的是哪个版本的材料组件?
  • 我目前使用的是 1.3.0 alpha 01 版本,下面是一行: implementation 'com.google.android.material:material:1.3.0-alpha01'
【解决方案2】:

几天前那个问题困扰了我。 我最终这样做了:

  1. 将您想要的颜色设置为colors.xml中的变量

    #ffffff

  2. 然后直接在drawable的源中设置这个颜色

    android:fillColor="@color/toolbarTextColor"

  3. 另外,在MaterialToolbar 中设置文本颜色时使用相同的变量。

这样,您的图标始终与文本颜色相同,我想这就是您想要的。否则,只需使用另一个变量。

【讨论】:

  • 好吧,这绝对有效!在接受您的回答之前,我正在等待其他一些回复,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-18
  • 1970-01-01
  • 1970-01-01
  • 2011-05-09
  • 1970-01-01
  • 2017-10-25
  • 1970-01-01
相关资源
最近更新 更多