第一项突出显示,休息时无法点亮:
这是我的bg选择器:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/accent_translucent" android:state_pressed="true"/>
<item android:drawable="@android:color/transparent"/>
我试过
onNavigationItemSelected(navigationView.getMenu().getItem(0));
onNavigationItemSelected(navigationView.getMenu().findItem(R.id.nav_profile));
navigationView.setCheckedItem(id);
似乎没什么工作
<?xml version="1.0" encoding="utf-8"?>
<group
android:checkableBehavior="single">
<item
android:id="@+id/drawer_main"
android:checked="true"
android:icon="@drawable/ic_home_black_24dp"
android:title="@string/dashboard"/>
<item
android:id="@+id/drawer_profile"
android:icon="@drawable/ic_favorite_black_24dp"
android:title="@string/profile"/>
<item
android:id="@+id/drawer_third"
android:icon="@drawable/ic_file_download_black_24dp"
android:title="@string/leaderboard"/>
<item
android:id="@+id/drawer_fourt"
android:icon="@drawable/ic_more_horiz_black_24dp"
android:title="@string/notification"/>
<item
android:id="@+id/drawer_fifth"
android:icon="@drawable/ic_settings_black_24dp"
android:title="@string/logout"/>
</group>
navigationView = (NavigationView) findViewById(R.id.navigation_view);
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
int id = menuItem.getItemId();
switch (id) {
case R.id.drawer_dashboard:
Intent i = new Intent(getApplicationContext(), MainActivity.class);
startActivity(i);
break;
case R.id.drawer_profile:
Intent j = new Intent(getApplicationContext(), secondActivity.class);
startActivity(j);
break;
任何想法都会有所帮助
如果我使用下面的代码,我可以突出显示但无法开始新活动
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
int id = menuItem.getItemId();
menuItem.setChecked(true);
drawerLayout.closeDrawers();
return true;
答案 0 :(得分:1)
创建视图时,请尝试使用getItem(int index)方法获取所有MenuItem,然后调用setCheckable(true),确保它是可以检查的。
答案 1 :(得分:0)
Android允许非常有限的菜单项访问。突出显示菜单项的最佳方法是在菜单中使用褪色图标,如果要突出显示,只需将图标替换为彩色图标。
navigationView.getMenu().findItem(R.id.drawer_dashboard).setIcon(R.drawable.icon_highlighted_icon);
并为休息重置正常图标。
此外,请尝试旧代码 -
onNavigationItemSelected(navigationView.getMenu().getItem(id));
navigationView.setCheckedItem(id);
此处用当前项目位置替换id。
希望它会对你有所帮助:)。