Android - NavigationView,菜单图标为TexDrawable

时间:2015-10-21 08:44:17

标签: android menuitem android-drawable navigationview android-navigationview

我正在尝试将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"));
        ...

这是意想不到的结果:

result of implementation

修改 当我将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上的图标?

1 个答案:

答案 0 :(得分:1)

NavigationView使用setItemIconTintList (ColorStateList tint)方法,这是您正在寻找的方法。

ColorStateList是一个XML文件,用于定义不同状态的不同过滤器。 Here是文档页面。