3

by default, menu titles and icons display in bottom navigation view.

how can we hide/show titles/icons of menu items programmically or in XML?

note: hide/show one of these: 'titles' or 'icons' (not both)

Amin Shabanzadeh
  • 301
  • 2
  • 11

1 Answers1

1

menu :

<?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>

method:

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;
    }
  });
}
ʍѳђઽ૯ท
  • 16,646
  • 7
  • 53
  • 108
Amin Shabanzadeh
  • 301
  • 2
  • 11