我有一个带有NavigationView和两个标签a
和b
的应用。 NavigationView中的两个MenuItem对应于标签a
和b
,因此,当选择标签a
时,应选择NavigationView MenuItem A
,同样为MenuItem {{ 1}}。选择MenuItem B
和A
也应相应地将标签更改为B
和a
。此处选择表示使用b
更改图标和文本的颜色,如下所示:
selector
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_checked="true"
android:color="@color/red"
android:drawable="@color/red" />
<item android:state_checked="false"
android:color="@color/gray"
android:drawable="@color/gray" />
</selector>
MenuItems包含在SubMenu中,定义如下:
<android.support.design.widget.NavigationView
android:id="@+id/my_navigationview"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
app:headerLayout="@layout/my_navigationview_header"
app:menu="@menu/my_navigationview"
app:itemIconTint="@drawable/colors_navigationview"
app:itemTextColor="@drawable/colors_navigationview"
/>
问题是,在选择标签<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/navigation_menu"
android:title="@string/foo">
<menu>
<item
android:id="@+id/my_navigationview_tab1"
android:icon="@drawable/fooicon"
android:title="@string/bar"/>
<item
android:id="@+id/my_navigationview_tab2"
android:icon="@drawable/baricon"
android:title="@string/barg"/>
</menu>
</item>
</menu>
或a
时,可以通过直接点击标签或刷选标签的ViewPager,MenuItems b
和{ {1}}的颜色未更新。然而,直接在NavigationView中选择MenuItems,并且调用完全相同的代码。因此,我有点困惑,为什么这不起作用。
总结:
A
已被调用。我可以尝试解决此问题?我目前处于亏损状态 - 这对IMO来说应该是一件容易的事情。我尝试了以下以及更多:
B
答案 0 :(得分:2)
似乎我找到了一点解决方法。
以下几种方法:
navigationView.getMenu().getItem(indx).setChecked(true);
navigationView.getMenu().findItem(someId).setChecked(true);
navigationView.setCheckedItem(someId);
navigationView.getMenu().performIdentifierAction(someId, 2);
没用。但是,如果您通过调用导航侦听器
来触发事件onNavigationItemSelected(MenuItem)
它运作的方法。
e.g。在你的应用中:
onNavigationItemSelected(getNavigationMenuItemTab1());