gpt4 book ai didi

android - AppCompat 工具栏上的 MenuItem 着色

转载 作者:IT老高 更新时间:2023-10-28 13:09:22 24 4
gpt4 key购买 nike

当我使用 AppCompat 中的可绘制对象时我的图书馆Toolbar着色按预期工作的菜单项。像这样:

<item
android:id="@+id/action_clear"
android:icon="@drawable/abc_ic_clear_mtrl_alpha" <-- from AppCompat
android:title="@string/clear" />

但是,如果我使用自己的可绘制对象,或者实际上甚至从 AppCompat 复制可绘制对象,库到我自己的项目,它根本不会着色。

<item
android:id="@+id/action_clear"
android:icon="@drawable/abc_ic_clear_mtrl_alpha_copy" <-- copy from AppCompat
android:title="@string/clear" />

AppCompat 中有什么特殊的魔法吗? Toolbar只对那个库中的drawables进行着色?有什么方法可以让它与我自己的可绘制对象一起使用?

在 API 级别 19 的设备上使用 compileSdkVersion = 21 运行它和 targetSdkVersion = 21 ,并且还使用 AppCompat 中的所有内容

abc_ic_clear_mtrl_alpha_copyabc_ic_clear_mtrl_alpha 的精确副本png 来自 AppCompat

编辑:

着色基于我为 android:textColorPrimary 设置的值在我的主题中。

例如<item name="android:textColorPrimary">#00FF00</item>会给我一个绿色的色调。

截图

使用 AppCompat 中的 drawable 可以按预期进行着色 Tinting working as expected with drawable from AppCompat

着色不适用于从 AppCompat 复制的可绘制对象 Tinting not working with drawable copied from AppCompat

最佳答案

在新的支持库 v22.1 之后,你可以使用类似这样的东西:

  @Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_home, menu);
Drawable drawable = menu.findItem(R.id.action_clear).getIcon();

drawable = DrawableCompat.wrap(drawable);
DrawableCompat.setTint(drawable, ContextCompat.getColor(this,R.color.textColorPrimary));
menu.findItem(R.id.action_clear).setIcon(drawable);
return true;
}

关于android - AppCompat 工具栏上的 MenuItem 着色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26780046/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com