我試圖做一個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"/>
我發現圖標不再變化(即使在聽者的代碼仍然被調用)。任何人都可以給我一個線索,爲什麼這些項目不更新?
我想知道是否可以在NavigationView上調用invalidateMenuOptions()
或可以在支持數據上調用notifyDataSetChanged()
功能?
檢查我更新的答案。如果我不遲到.. lolzz – Moinkhan
編輯答案與子項目一起工作.. – Moinkhan