我该如何解决这个问题?
我为这个(和其他)问题创建了一个实用程序类。在这里获取:
https://gist.github.com/consp1racy/96958a1dedf5a99d4ca5
第 1 部分:在您的 中调用以下方法Activity.onCreate(Bundle)
:
ToolbarUtils.fixToolbar(mToolbar);
第 2 部分:代码使用android:colorControlNormal
您在布局中指定的工具栏“主题”中的值。如果您使用支持库并仅定义colorControlNormal
,则需要在其后添加以下行:
<item name="android:colorControlNormal" tools:ignore="NewApi">?attr/colorControlNormal</item>
这个问题的原因是什么?
经过大量的思考和实验,似乎箭头使用了原始位图,它是白色的,没有任何着色,这是错误的。
注意:菜单溢出图标也会显示,android:colorControlNormal
所以现在它也会显示正确的颜色。
编辑:先决条件:
您Toolbar
应该具有类似于以下的属性
<!-- custom toolbar theme -->
<item name="theme">@style/ThemeOverlay.MyApp.ActionBar</item>
<!-- light popup menu theme, change this if you need to -->
<item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item>
<!-- app bar background color -->
<item name="android:background">@color/material_deep_orange_500</item>
然后工具栏主题应该看起来像这样
<!-- example uses dark app bar template, feel free to change it to light if you need to -->
<style name="ThemeOverlay.MyApp.ActionBar" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
<!-- this line defines title text color -->
<item name="android:textColorPrimary">@color/material_white_100</item>
<!-- this line defines subtitle text color -->
<item name="android:textColorSecondary">@color/material_white_70</item>
<!-- this line defines up/hamburger/overflow icons color -->
<item name="colorControlNormal">@color/material_black_54</item>
<!-- this line is necessary for proper coloring on lollipop - do not delete it -->
<item name="android:colorControlNormal" tools:ignore="NewApi">?attr/colorControlNormal</item>
</style>