Отключить первый пункт меню BottomNavigation?

#android #xml #navigation

Вопрос:

Я хотел бы отключить первый пункт меню BottomNavigation. Я попробовал сделать это таким образом:

   bottomNavigationView.getMenu().getItem(0).setEnabled(false);
 

Я использовал стиль для отключенных элементов. Стиль, похоже, работает для всех элементов, кроме первого элемента. Я также попытался перевести элемент в отключенное состояние, отредактировав xml. Но кнопка всегда выглядит одинаково.

Вот мой XML для оформления меню:

 <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/secondaryColor" android:state_checked="true"/>
<item android:color="@color/secondaryColor" android:state_enabled="true"/>

<item android:color="#BEBEBE" android:state_enabled="false"/>

</selector>
 

И это меню:

    <com.google.android.material.bottomnavigation.BottomNavigationView
    android:layout_alignParentBottom="true"
    app:labelVisibilityMode="labeled"
    android:id="@ id/bottom_navigation"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:itemIconTint="@drawable/tab_items"
    app:itemTextColor="@drawable/tab_items"
    app:menu="@menu/navigation_portfolio_view" />
 

Навигация определяется таким образом:

 <menu
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:id="@ id/item1"
    android:enabled="false"
    android:icon="@drawable/ic_baseline_notifications_24"
    android:title="Item 1"/>
<item
    android:id="@ id/item2"
    android:icon="@drawable/ic_baseline_home_24"
    android:title="Item 2"/>
<item
    android:id="@ id/item3"
    android:enabled="true"

    android:icon="@drawable/ic_baseline_person_add_24"
    android:title="Item 3"/>

<item
    android:id="@ id/additional_features"
    android:enabled="false"
    android:icon="@drawable/ic_baseline_pending_24"
    android:title="Additional features"/>
</menu>
 

У вас есть какие-либо идеи, почему первый элемент не может быть изменен (с помощью кода или XML)? Он должен быть выделен серым цветом.

Ответ №1:

это потому, что первый пункт в меню также сначала «отмечен».

в вашем файле «tab_items» — вы можете удалить строку :

 <item android:color="@color/secondaryColor" android:state_checked="true"/>
 

и тогда значок станет серым.