Android:底部导航视图 - 更改所选项目的图标

新手上路,请多包涵

我在我的应用程序中添加了 BottomNavigationView

主要的.xml

 <android.support.design.widget.BottomNavigationView
        android:id="@+id/bottom_navigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        app:itemBackground="@color/colorPrimary"
        app:itemIconTint="@color/white"
        app:itemTextColor="@color/white"
        app:menu="@menu/bottom_navigation_main" />

bottom_navigation_main.xml

 <?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_favorites"
        android:enabled="true"
        android:icon="@drawable/ic_favorite_white_24dp"
        android:title="@string/text_favorites"
        app:showAsAction="ifRoom" />
    <item
        android:id="@+id/action_schedules"
        android:enabled="true"
        android:icon="@drawable/ic_access_time_white_24dp"
        android:title="@string/text_schedules"
        app:showAsAction="ifRoom" />
    <item
        android:id="@+id/action_music"
        android:enabled="true"
        android:icon="@drawable/ic_audiotrack_white_24dp"
        android:title="@string/text_music"
        app:showAsAction="ifRoom" />
</menu>

MainActivity 点击

bottomNavigationView.setOnNavigationItemSelectedListener(
        new BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                switch (item.getItemId()) {
                    case R.id.action_favorites:
                        //need change icon of favotites here.
                    case R.id.action_schedules:

                    case R.id.action_music:

                }
                return true;
            }
        });

我想更改所选位置底部导航的图标。当用户单击一个项目时,我们如何实现此功能?

(如果用户单击一项,则图标将更改为另一项)

原文由 Adarsh 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 705
2 个回答

你需要在onclick上重置图标,然后在switch case上你只需要设置你需要改变的那个,所以只有选中的时候图标才会改变。

 Menu menu = bottomNavigationView.getMenu();
menu.findItem(R.id.action_favorites).setIcon(favDrawable);

switch (item.getItemId()) {
                case R.id.action_favorites:
                     item.setIcon(favDrawableSelected);
                case R.id.action_schedules:
                case R.id.action_music:
            }

原文由 Henrique César Madeira 发布,翻译遵循 CC BY-SA 3.0 许可协议

关于材料 3

您需要创建一种样式并将颜色放在:

  <style name="BottomNavigationView">
        <item name="colorSecondaryContainer">@color/background_dark</item>
        <item name="colorSurface">?attr/colorPrimaryVariant</item>
        <!--  Icon color Active  -->
        <item name="colorOnSecondaryContainer">@color/yellow</item>
        <!--  Text Color Active -->
        <item name="colorOnSurface">@color/yellow</item>
</style>

要查看非活动颜色,请查看 文档

原文由 Gustavo da Hora 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题