我正在以编程方式在导航视图中添加项目,但我必须以编程方式添加itemTextColor
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
final Menu menu = navigationView.getMenu();
for (int i = 1; i <= 3; i++) {
menu.add("test" + i);
}
点击特定项目时,它的颜色会发生变化并保持相同的颜色。例如:当用户打开抽屉并单击特定项目时,它会更改颜色并保持(相同颜色)另一个项目单击。
答案 0 :(得分:4)
我找到了动态数据添加和菜单项选择器的解决方案(在抽屉上单击)。
以下是代码:
// MainActivity.java
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
final Menu menu = navigationView.getMenu();
for (int i = 1; i <= 3; i++) {
menu.add("Test " + i);
}
public boolean onNavigationItemSelected(MenuItem item) {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
item.setCheckable(true);
item.setChecked(true);
item.setEnabled(true);
return true;
}
// Drawable
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="#097054" android:state_enabled="false" />
<item android:color="#097054" android:state_checked="true" />
<item android:color="#FFDE00" />
</selector>
// activity.xml
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="#ffffff"
android:fitsSystemWindows="true"
app:itemBackground="@android:color/transparent"
app:itemTextColor="@drawable/menu_text_color">
</android.support.design.widget.NavigationView>
答案 1 :(得分:0)
您可以使用Spannable String更改NavigationView项目的颜色.. 我可以通过使用此代码来实现。
此处的项目是您的MenuItem。
SpannableString mNewTitle = new SpannableString(item.getTitle());
mNewTitle.setSpan(new CustomTypefaceSpan("", font, 16), 0,
mNewTitle.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
mNewTitle.setSpan(new RelativeSizeSpan(1.2f), 0, mNewTitle.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
mNewTitle.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.light_grey)), 0, mNewTitle.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
item.setTitle(mNewTitle);