我正在尝试将NavigationView中的项目菜单图标设置为TextDrawable。对于使用TextDrawable library的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
上的图标?
答案 0 :(得分:1)
NavigationView
使用setItemIconTintList (ColorStateList tint)
方法,这是您正在寻找的方法。
ColorStateList
是一个XML文件,用于定义不同状态的不同过滤器。 Here是文档页面。