【问题标题】:How to give custom text colour for a single menu item in a NavigationView?如何为 NavigationView 中的单个菜单项提供自定义文本颜色?
【发布时间】:2015-06-26 11:10:08
【问题描述】:

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

【问题讨论】:

    标签: android material-design navigationview


    【解决方案1】:

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

    首先获取要更改颜色的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;
            }
        });
    

    【讨论】:

    • 非常狡猾!似乎完全疏忽了,因为您可以获取单个菜单项的可绘制图标。谢谢!
    • 这是金子!我搜索的时间太长了,谢谢:)
    【解决方案2】:

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

    我真的建议创建一个自定义视图来做你想做的事情(在你的问题中不是很详细,所以很难提出一个替代方案)。或者,如果你真的想使用 SDK 提供的东西,也许你可以使用 OptionsMenu(它应该允许自定义单个菜单项)。

    编辑:事实证明,没有自定义视图也可以做到这一点。有关详细信息,请参阅 moinkhan 接受的答案。

    【讨论】:

    • 嗨,这是可能的。看答案! :)
    • 谢谢!我更新了对任何偶然发现此线程的人的回复。
    猜你喜欢
    • 2016-03-21
    • 2018-10-19
    • 1970-01-01
    • 2015-08-16
    • 2015-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多