我正在尝试将 NavigationView 中的项目菜单图标设置为 TextDrawable。对于使用TextDrawable 库的 textDrawable 即时通讯,但是一旦我为菜单项设置图标,它只会显示一个黑色圆圈而不是生成的可绘制对象。
我确实尝试过我的代码在 NavigationView 之外生成 TextDrawable,它显示了我需要的内容,但我无法让它显示为我的菜单项的图标。
要生成 TexDrawable:
private Drawable getLetterDrawable(String letter){
return TextDrawable.builder()
.beginConfig()
.width(20) // width in px
.height(20) // height in px
.endConfig()
.buildRect(letter, Color.RED);
}
设置图标:
...
navigationView.inflateMenu(R.menu.menu_drawer_users);
Menu menu = navigationView.getMenu();
menu.add("Item text here").setIcon(getLetterDrawable("A"));
...
这是意想不到的结果:
编辑:
当我设置R.mipmap.ic_launcher
为图标时,我得到了 android 图标,但也是灰色的,所以我只能看到它的边框。似乎可绘制对象在使用时被“着色”了menuItem.setIcon()
。
我确实尝试过以下操作,但没有成功:
MenuInflater mi = getMenuInflater();
mi.inflate(R.menu.menu_drawer, menu);
menu.add("Test");
menu.getItem(0).setIcon(R.mipmap.ic_launcher);
menu.getItem(0).getIcon().clearColorFilter();
menu.getItem(0).getIcon().invalidateSelf();
问题:如何删除过滤器并以颜色显示我的图标?
编辑 2:根据建议,我确实设法 从Andrea Basso
navigationView 对象中删除了色调,但我仍然看不到正方形内的字母。我只看到红色方块,但没有看到里面的字母。
主要问题仍然存在:如何将TextDrawable作为图标放在MenuItem
?