当我使用AppCompat
库中的drawables 作为我的Toolbar
菜单项时,着色按预期工作.像这样:
<item
android:id="@+id/action_clear"
android:icon="@drawable/abc_ic_clear_mtrl_alpha" <-- from AppCompat
android:title="@string/clear" />
Run Code Online (Sandbox Code Playgroud)
但是如果我使用自己的drawables,或者实际上甚至将drawables从AppCompat
库中复制到我自己的项目中,它根本就不会染色.
<item
android:id="@+id/action_clear"
android:icon="@drawable/abc_ic_clear_mtrl_alpha_copy" <-- copy from AppCompat
android:title="@string/clear" />
Run Code Online (Sandbox Code Playgroud)
是否有一些特殊的魔法AppCompat
Toolbar
,只有那个图书馆的色彩抽奖?有没有办法让我的自己的drawables工作?
在API Level 19设备上使用compileSdkVersion = 21
和运行此操作targetSdkVersion = 21
,并使用其中的所有内容AppCompat
abc_ic_clear_mtrl_alpha_copy
是abc_ic_clear_mtrl_alpha
png 的精确副本AppCompat
编辑:
着色基于我android:textColorPrimary
在主题中设定的值.
例如,<item name="android:textColorPrimary">#00FF00</item>
可以给我一个绿色的色调的颜色.
截图
着色使用AppCompat中的drawable按预期工作
着色不适用于从AppCompat复制的drawable
如何着色菜单图标已经覆盖了几次,例如: Android上的工具栏图标着色
除此解决方案外,还存在导航图标的问题.将主题(叠加)应用于工具栏只会对文本和白名单图标进行着色(请参阅:https://stackoverflow.com/a/26817918/2417724)
如果您设置了一个自定义图标(这种情况非常简单,如果您不想显示默认的后退箭头,则需要更改它),则此自定义图标不会显示.
那你如何处理你的图标?我的所有图标都是默认的黑色,我不想在工具栏中使用特殊的白色版本.