Я пытаюсь сделать поведение флажок в NavigationView
Невозможно изменить иконки для подразделов в NavigationView
С не подразделов (все пункты меню верхнего уровня), я могу счастливо изменить иконки, используя следующий код:
mNavigationView.setNavigationItemSelectedListener(
new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
Boolean boolObj = mMenuToggleMap.get(menuItem.getItemId());
boolean state = boolObj == null ? true : boolObj.booleanValue();
state = !state;
if(state) menuItem.setIcon(R.drawable.btn_check_off_holo_light);
else menuItem.setIcon(R.drawable.btn_check_on_holo_light);
mMenuToggleMap.put(menuItem.getItemId(), state);
return true;
}
});
menu.xml:
<item
android:id="@+id/books"
android:title="@string/books"
android:icon="@drawable/btn_check_off_holo_light"
app:showAsAction="always"/>
<item
android:id="@+id/cddvds"
android:icon="@drawable/btn_check_off_holo_light"
android:title="@string/cddvds"
app:showAsAction="always"/>
Как вы можете видеть:
Однако, как только я изменить XML следующим образом:
<item
android:id="@+id/categorySubHeader"
android:title="@string/categories">
<menu>
<item
android:id="@+id/books"
android:title="@string/books"
android:icon="@drawable/btn_check_off_holo_light"
app:showAsAction="always"/>
<item
android:id="@+id/cddvds"
android:icon="@drawable/btn_check_off_holo_light"
android:title="@string/cddvds"
app:showAsAction="always"/>
Я считаю, что значки больше не изменяются (даже при том, что код у слушателя еще называют). Может ли кто-нибудь дать мне понять, почему эти предметы не обновляются?
Мне интересно, можно ли вызывать invalidateMenuOptions()
в NavigationView или функцию notifyDataSetChanged()
для данных резервной копии?
проверить мой обновленный ответ. Если я не опаздываю .. lolzz – Moinkhan
Отредактированный ответ также работает с подпунктом. – Moinkhan