【问题标题】:Menu item TITLE VISIBILITY in bottom navigation view底部导航视图中的菜单项 TITLE VISIBILITY
【发布时间】:2018-08-29 14:00:24
【问题描述】:

默认情况下,菜单标题和图标显示在底部导航视图中。

我们如何以编程方式或在 XML 中隐藏/显示菜单项的标题/图标?

注意:隐藏/显示以下之一:“标题”或“图标”(不是两者)

【问题讨论】:

  • 我有一个带有菜单标题和图标的底部导航视图。我希望当一个项目被选中时,其他项目的标题被隐藏并且只显示未选中项目的图标
  • 我创建了一个方法(检查下面的答案)。怎么样?!

标签: java android xml


【解决方案1】:

菜单:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/home"
        android:icon="@drawable/home"
        android:title="@string/home"/>

    <item
        android:id="@+id/about"
        android:icon="@drawable/about" />

    <item
        android:id="@+id/services"
        android:icon="@drawable/services" />

    <item
        android:id="@+id/portfolios"
        android:icon="@drawable/portfolios" />

    <item
        android:id="@+id/contact"
        android:icon="@drawable/contact" />

</menu>

方法:

private void bnvHelper(){
    BottomNavigationView bnv = (BottomNavigationView)findViewById(R.id.bottom_navigation_view);
    bnv.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {

        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            int[] titles = {
                    R.string.home,
                    R.string.about,
                    R.string.services,
                    R.string.portfolios,
                    R.string.contact};
            BottomNavigationView bnv = (BottomNavigationView)findViewById(R.id.bottom_navigation_view);
            Menu menu = bnv.getMenu();
            final int previousItem = bnv.getSelectedItemId();
            final int nextItem = item.getItemId();
            if (previousItem != nextItem) {
                switch (nextItem) {
                    case R.id.home:
                        menu.getItem(0).setTitle(titles[0]);
                        menu.getItem(1).setTitle(null);
                        menu.getItem(2).setTitle(null);
                        menu.getItem(3).setTitle(null);
                        menu.getItem(4).setTitle(null);
                        break;
                    case R.id.about:
                        menu.getItem(1).setTitle(titles[1]);
                        menu.getItem(0).setTitle(null);
                        menu.getItem(2).setTitle(null);
                        menu.getItem(3).setTitle(null);
                        menu.getItem(4).setTitle(null);
                    break;
                case R.id.services:
                        menu.getItem(2).setTitle(titles[2]);
                        menu.getItem(0).setTitle(null);
                        menu.getItem(1).setTitle(null);
                        menu.getItem(3).setTitle(null);
                        menu.getItem(4).setTitle(null);
                    break;
                case R.id.portfolios:
                        menu.getItem(3).setTitle(titles[3]);
                        menu.getItem(0).setTitle(null);
                        menu.getItem(1).setTitle(null);
                        menu.getItem(2).setTitle(null);
                        menu.getItem(4).setTitle(null);
                    break;
                case R.id.contact:
                        menu.getItem(4).setTitle(titles[4]);
                        menu.getItem(0).setTitle(null);
                        menu.getItem(1).setTitle(null);
                        menu.getItem(2).setTitle(null);
                        menu.getItem(3).setTitle(null);
                    break;
            }
        } return true;
    }
  });
}

【讨论】:

  • 看起来不错,有用吗?如您所知,图标隐藏或启用将不再是问题。
猜你喜欢
  • 2021-07-28
  • 1970-01-01
  • 2020-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-08
  • 2018-09-07
  • 2021-10-12
相关资源
最近更新 更多