如何为 NavigationView 中的单个菜单项提供自定义文本颜色?

How to give custom text colour for a single menu item in a NavigationView?

您好,我正在使用 android NavigationView。我想为 NavigationView 中的某些项目提供单独的文本颜色,而不是为所有项目提供单独的文本颜色。或者,当我 select NavigationView 中的某个项目(仅适用于某些项目)时,我想动态更改单个项目的文本颜色。我该怎么做?

据我所知,这是不可能的。我已经搜索过(我相信你搜索过)试图找到一个如何完成这个的例子,但找不到。

我真的建议创建一个自定义视图来执行您正在尝试执行的操作(您的问题中没有详细说明,因此很难提出替代方案)。或者,如果你真的想使用 SDK 提供的东西,也许你可以使用 OptionsMenu(它应该允许自定义单个菜单项)。

编辑:事实证明可以在没有自定义视图的情况下执行此操作。有关详细信息,请参阅 moinkhan 接受的答案。

是的你可以做到我也做到了.

首先获取要更改颜色的 MenuItem

 Menu m = navView.getMenu();
 MenuItem menuItem = m.findItem(your_menu_id);

然后用你的颜色应用 spannable

SpannableString s = new SpannableString(menuItem.getTitle());
s.setSpan(new ForegroundColorSpan(Color.your_color), 0, s.length(), 0);
menuItem.setTitle(s); 

就是这样..

现在下面的代码是您的第二个解决方案,在单击菜单时动态更改文本颜色..

navView.setNavigationItemSelectedListener(new 
    NavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(MenuItem menuItem) {
            SpannableString s = new SpannableString(menuItem.getTitle());
            s.setSpan(new ForegroundColorSpan(Color.RED), 0, s.length(), 0);
            menuItem.setTitle(s);
            return false;
        }
    });