我可以使导航菜单项文本与其他项目不同吗?
Can I make navigation menu item text to be different than other items?
我在我的应用程序上使用 NavigationView
和菜单。
我希望其中一个菜单项具有不同的颜色(图标和文本)。
我可以使用 setItemIconTintList(null)
并使用所需颜色的图标使图标显示其他颜色。
有没有办法让单个菜单项的文字颜色不一样?
你可以这样使用:
//Change to your NavigationView Id
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
//change R.id.menu_item to your id
navigationView.getMenu().findItem(R.id.menu_item).setTitle(Html.fromHtml("<font color='#ff3824'>Settings</font>"));
受到 DevTest 的启发,我最终使用 SpannableString
来设置具有特定颜色的文本。
我已经为它创建了一个 util 方法:
public static CharSequence getSpannableColorString (String text, int color) {
SpannableString spanString = new SpannableString(text);
spanString.setSpan(new ForegroundColorSpan(color),0, text.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
return spanString;
}
然后用它来设置我的 MenuItem
的标题:
MenuItem menuItem = navigationView.getMenu().findItem(R.id.myItem);
menuItem.setTitle(getSpannableColorString(getString(R.string.itemText), getColor(R.color.itemColor)));
我在我的应用程序上使用 NavigationView
和菜单。
我希望其中一个菜单项具有不同的颜色(图标和文本)。
我可以使用 setItemIconTintList(null)
并使用所需颜色的图标使图标显示其他颜色。
有没有办法让单个菜单项的文字颜色不一样?
你可以这样使用:
//Change to your NavigationView Id
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
//change R.id.menu_item to your id
navigationView.getMenu().findItem(R.id.menu_item).setTitle(Html.fromHtml("<font color='#ff3824'>Settings</font>"));
受到 DevTest 的启发,我最终使用 SpannableString
来设置具有特定颜色的文本。
我已经为它创建了一个 util 方法:
public static CharSequence getSpannableColorString (String text, int color) {
SpannableString spanString = new SpannableString(text);
spanString.setSpan(new ForegroundColorSpan(color),0, text.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
return spanString;
}
然后用它来设置我的 MenuItem
的标题:
MenuItem menuItem = navigationView.getMenu().findItem(R.id.myItem);
menuItem.setTitle(getSpannableColorString(getString(R.string.itemText), getColor(R.color.itemColor)));