底部导航视图中的菜单项标题可见性

3

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

我们如何通过编程或使用XML隐藏/显示菜单项的标题/图标?

注意:隐藏/显示其中之一:'标题' 或 '图标' (不是两者都隐藏/显示)


尝试这个答案:https://dev59.com/Q1cO5IYBdhLWcg3w7lrq#51800325 - ʍѳђઽ૯ท
我有一个带有菜单标题和图标的底部导航视图。当选中一个项目时,我希望其他项目的标题被隐藏,只显示未选中项目的图标。 - Amin Shabanzadeh
我创建了一个方法(请参见下面的答案)。这怎么样?! - Amin Shabanzadeh
1个回答

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;
    }
  });
}

看起来不错,它能工作吗?正如您所知,图标的隐藏或启用将不再是问题。 - ʍѳђઽ૯ท

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