Android 导航视图中每个项目的不同文本颜色?
我正在android studio中使用导航视图在我的应用程序中创建导航抽屉。在导航抽屉中,我希望有一个项目是绿色的,一个是红色的,其他的是黑色的(就像下面截图中的一样)。然而,我似乎找不到解决这个问题的办法。我知道我可以在XML中使用“itemTextColor”更改所有项目的颜色,但这不是我想要做的Android 导航视图中每个项目的不同文本颜色?,android,android-studio,android-navigationview,Android,Android Studio,Android Navigationview,我正在android studio中使用导航视图在我的应用程序中创建导航抽屉。在导航抽屉中,我希望有一个项目是绿色的,一个是红色的,其他的是黑色的(就像下面截图中的一样)。然而,我似乎找不到解决这个问题的办法。我知道我可以在XML中使用“itemTextColor”更改所有项目的颜色,但这不是我想要做的 因此,改变特定项目的颜色似乎不那么容易,要么全是,要么全是(通过com.google.android.material.navigation.NavigationView上的app:itemIc
因此,改变特定项目的颜色似乎不那么容易,要么全是,要么全是(通过
com.google.android.material.navigation.NavigationView
上的app:itemIconTint
和app:itemTextColor
),但你似乎可以这样做(如果您使用Kotlin或Java,我是用Java实现的,您从未提到过这一点):
您是否在menu.xml中尝试过需要添加的任何项目
android:textColor:“[your_COLOR_HERE]”
@DavidKroukamp menu.xml项标记中没有android:textColor
属性检查我的答案,在NavigationView
中用xml为单个菜单项执行此操作并不容易,您必须在代码中执行此操作。非常感谢!我确实使用此工具更改了文本颜色。但是,它仍然不会更改图标的颜色.你能告诉我怎么做吗?看起来不太可能,伙计,从技术上来说,他们应该共享相同的颜色,这就是NavigationView的构建方式,这个“黑客”因为文本在presenter中的呈现方式不同,所以可以更改文本颜色,但无论您以编程方式设置什么,它看起来都会覆盖应用的所有色调(除了在XML中,但这会更改所有项,而不仅仅是1或2项)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// .. other code
NavigationView navigationView = findViewById(R.id.nav_view);
// .. other code
int menuItemPosition = 0; // the position of the menu item in NavigationView you want to change the color of
MenuItem menuItem = navigationView.getMenu().getItem(menuItemPosition);
this.changeMenuItemColor(menuItem, Color.RED);
}
private void changeMenuItemColor(MenuItem menuItem, @ColorInt int color) {
SpannableString coloredMenuItemTitle = new SpannableString(menuItem.getTitle());
coloredMenuItemTitle.setSpan(new ForegroundColorSpan(Color.RED), 0, coloredMenuItemTitle.length(), 0);
menuItem.setTitle(coloredMenuItemTitle);
}