你好,我正在使用Android的NavigationView。我想要为导航视图中的某些项目单独设置文本颜色,而不是所有项目都设置。或者当我在导航视图中选择一个项目时,我想动态地更改单个项目的文本颜色(只适用于特定项目)。我该怎么做?
你好,我正在使用Android的NavigationView。我想要为导航视图中的某些项目单独设置文本颜色,而不是所有项目都设置。或者当我在导航视图中选择一个项目时,我想动态地更改单个项目的文本颜色(只适用于特定项目)。我该怎么做?
是的,你可以做到 我也曾经做过。
首先获取你想要更改颜色的菜单项。
Menu m = navView.getMenu();
MenuItem menuItem = m.findItem(your_menu_id);
然后使用可变样式将颜色应用到文本
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;
}
});
OptionsMenu
(应该允许自定义各个菜单项)。