底部导航栏突出显示选定的项目

9

我已经在我的活动 XMl 中添加了底部导航视图。但是我无法从菜单项中设置默认选中的项目。它总是将第一个菜单项设为默认值。而且,当我点击其他菜单项时,所选菜单项没有高亮显示。如果我在编程时设置item.setChecked(true),则菜单选项会被突出显示,但第一个菜单项也会被突出显示。

 compile 'com.android.support:design:25.0.1'

这里是底部导航视图。
<android.support.design.widget.BottomNavigationView
    android:id="@+id/bottom_navigation"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:itemBackground="@color/white"
    app:itemTextColor="@color/black"
    app:menu="@menu/navigation_menu">
</android.support.design.widget.BottomNavigationView>

这是菜单。
 <?xml version="1.0" encoding="utf-8"?>
 <menu xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto">

<item
    android:id="@+id/action_wallet"
    android:enabled="true"
    android:icon="@drawable/ic_account_balance_wallet_black_24dp"
    android:title="wallet"
    app:showAsAction="ifRoom"
    />
<item
    android:id="@+id/action_card"
    android:enabled="true"
    android:title="allowance"
    android:icon="@drawable/ic_credit_card_black_24dp"
    app:showAsAction="ifRoom"
    />

<item
    android:id="@+id/action_transaction"
    android:enabled="true"
    android:icon="@drawable/ic_description_black_24dp"
    android:title="transaction"
    app:showAsAction="ifRoom" />

</menu>

底部导航视图 有人遇到过这种情况吗?如何处理?有什么建议吗?

谢谢, Priya


3
你尝试过在每个菜单项中添加android:checkable="true"吗?你在OnNavigationItemSelectedListener中返回了true吗? - Oleh
在 OnNavigationItemSelectedListener 上返回 true 解决了问题。谢谢 :) - user2622786
2个回答

15
drawable文件夹中添加一个selector.xml,例如我的xmlnavbar_color.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true"
         android:color="highlight color" />
   <item android:color="normal color"  />
</selector>

然后在BottomNavigationView的行中添加以下内容

app:itemIconTint="@drawable/selector"
app:itemTextColor="@drawable/selector"

3
不错的干净解决方案。另外需要注意的是,为了使其起作用,我还需要在#onNavigationItemSelected中设置menuItem.setChecked(true)来设置已选状态。 - Eurospoofer
3
BottomNavigationView不支持app:itemIconTint="@drawable/selector"的意思是@drawable未找到。 - Bhavesh Vadalia

11

我在OnNavigationItemSelectedListener中没有返回true,因此我遇到了问题。 从OnNavigationItemSelectedListener返回true后,问题得以解决。 感谢user2650128指出了方向。


3
奇怪,返回true并没有解决我的问题。事实上,item.setChecked(true)会使该项始终被选中,即使我切换到另一个选项卡。 - Xi Wei

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接