Я хочу, чтобы NavigationView
проверял один элемент при запуске приложения. Но я обнаружил, что NavigationView.setCheckedItem(R.id.xxx)
не работает. И я также пробовал navigationView.getMenu().findItem(R.id.xxx).setChecked(true)
, тот же результат.NavigationView с DrawerLayout setCheckedItem не работает
Я уже установил checkableBehavior для одиночного.
<item android:title="@string/sliding_menu_group_places">
<menu>
<group android:checkableBehavior="single">
<item
android:id="@+id/xxx"
android:icon="@drawable/xxx"
android:title="@string/xxx" />
<item
android:id="@+id/xxx"
android:icon="@drawable/xxx"
android:title="@string/xxx" />
...
</group>
</menu>
</item>
Но есть один способ работал:
drawerLayout.setDrawerListener(new DrawerLayout.DrawerListener() {
@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
}
@Override
public void onDrawerOpened(View drawerView) {
navigationView.setChecked(R.id.xxx);
}
@Override
public void onDrawerClosed(View drawerView) {
}
@Override
public void onDrawerStateChanged(int newState) {
}
});
навигации пункт будет проверяться в onDrawerOpened обратного вызова. Я много искал в stackoverflow, но ни один метод не работает для меня. Кто может мне помочь?
EDIT-1
<?xml version="1.0" encoding="utf-8"?>
<group android:checkableBehavior="single">
<item
android:id="@+id/xxx"
android:icon="@drawable/xxx"
android:title="@string/recent_display_name" />
<item android:title="@string/sliding_menu_group_places">
<menu>
<group android:checkableBehavior="single">
<item
android:id="@+id/xxx"
android:icon="@drawable/xxx"
android:title="@string/my_files_display_name" />
<item
android:id="@+id/nav_item_sdcard"
android:icon="@drawable/ic_nav_sdcard"
android:title="@string/storage_display_name" />
</group>
</menu>
</item>
<item android:title="@string/sliding_menu_group_tool">
<menu>
<group android:checkableBehavior="single">
<item
android:id="@+id/xxx"
android:icon="@drawable/xxx"
android:title="@string/clean_display_name" />
</group>
</menu>
</item>
<item android:title="@string/sliding_menu_group_settings">
<menu>
<group android:checkableBehavior="single">
<item
android:id="@+id/xxx"
android:icon="@drawable/xxx"
android:title="@string/settings_display_name" />
<item
android:id="@+id/xxx"
android:icon="@drawable/xxx"
android:title="@string/exit_display_name" />
</group>
</menu>
</item>
</group>
попробуйте navView.getMenu(). GetItem (pos) .setChecked (true); – darwin
только что установленный, android: checked = "true" внутри вашего . не нужно устанавливать его вручную в свой Java-файл. –
Radhey
mDrawerList.setItemChecked (позиция, истина); здесь mDrawerList - это вы ListView, попробуйте это – user3068659