嗨,我正在使用 android NavigationView。我想为 NavigationView 中的某些项目提供单独的文本颜色,而不是为所有项目。或者我想在 NavigationView 中选择一个项目时动态更改单个项目的文本颜色(仅适用于某些项目)。我怎样才能做到这一点?
问问题
2032 次
2 回答
23
是的,你可以做到,我也做到了。
首先获取要更改颜色的 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;
}
});
于 2015-06-27T08:05:56.270 回答
0
据我所知,这是不可能的。我已经搜索(我相信你有)试图找到一个如何完成这个的例子,但找不到一个。
我真的建议创建一个自定义视图来做你想做的事情(你的问题不是很详细,所以很难提出一个替代方案)。或者,如果你真的想使用 SDK 提供的东西,也许你可以使用OptionsMenu
(它应该允许自定义单个菜单项)。
编辑:事实证明,没有自定义视图也可以做到这一点。有关详细信息,请参阅 moinkhan 接受的答案。
于 2015-06-26T12:31:42.723 回答