android - 更改 MaterialToolbar 菜单项图标颜色
android - Change MaterialToolbar menu items icon color
我目前正在创建一个应用程序,其中有一个 MaterialToolbar
小部件。我想将图标颜色设置为白色。
我尝试按照 中接受的答案进行操作,但是它不起作用。在 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" />
我能做什么?
编辑、解决方案和解释
感谢大家的精彩回答。我设法找到了一个解决方案,其中包括两个解决方案和另一个问题。
在问题中,被问到为什么colorControlNormal
不起作用。接受的答案说,在向量行中,您必须更改给定 android:fillColor
的值,并将其替换为 ?attr/colorControlNormal
。执行此技巧,项 colorControlNormal,将控制所需的图标颜色。
在应用程序main样式中,您需要输入:
<item name="colorControlNormal">@android:color/white</item>
然后,在你想要的图标中,你需要在path
下放置:
android:fillColor="?attr/colorControlNormal"
就是这样!现在图标将获得指定给 colorControlNormal 属性的颜色!
几天前那个问题让我很烦。
我最终这样做了:
将您想要的颜色设置为 colors.xml
中的变量
#ffffff
然后在drawable的source中直接设置这个颜色
android:fillColor="@color/toolbarTextColor"
此外,在 MaterialToolbar
中设置文本颜色时使用相同的变量。
这样,您的图标总是与文本颜色相同,我想这正是您想要的。否则,只需使用另一个变量。
您可以使用:
<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>
我目前正在创建一个应用程序,其中有一个 MaterialToolbar
小部件。我想将图标颜色设置为白色。
我尝试按照 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" />
我能做什么?
编辑、解决方案和解释
感谢大家的精彩回答。我设法找到了一个解决方案,其中包括两个解决方案和另一个问题。
在colorControlNormal
不起作用。接受的答案说,在向量行中,您必须更改给定 android:fillColor
的值,并将其替换为 ?attr/colorControlNormal
。执行此技巧,项 colorControlNormal,将控制所需的图标颜色。
在应用程序main样式中,您需要输入:
<item name="colorControlNormal">@android:color/white</item>
然后,在你想要的图标中,你需要在path
下放置:
android:fillColor="?attr/colorControlNormal"
就是这样!现在图标将获得指定给 colorControlNormal 属性的颜色!
几天前那个问题让我很烦。 我最终这样做了:
将您想要的颜色设置为
中的变量colors.xml
#ffffff 然后在drawable的source中直接设置这个颜色
android:fillColor="@color/toolbarTextColor"
此外,在
MaterialToolbar
中设置文本颜色时使用相同的变量。
这样,您的图标总是与文本颜色相同,我想这正是您想要的。否则,只需使用另一个变量。
您可以使用:
<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>