ActionBar в Android переопределяет BottomNavigation

При попытке изменить значок на загруженный рисуемый объект (или при фактическом изменении на любой другой значок во время выполнения) значок меняется один раз на панели действий.

На самом деле я хочу удалить панель действий и оставить для навигации только нижнюю часть навигации (вкладки), но что бы я ни делал, значок меняется только на панели действий.

Элемент внутри bottom_nav_menu.xml:

    <item
    android:id = "@+id/navigation_notifications"
    android:icon = "@drawable/ic_dashboard_black_24dp"
    android:title = "@string/title_notifications"
    app:showAsAction = "ifRoom"/>

Код, меняющий иконку:

@Override
public boolean onPrepareOptionsMenu (Menu menu){
    menu.clear();
    getMenuInflater().inflate(R.menu.bottom_nav_menu, menu);
    menu.getItem(2).setIcon(this.bitmap_pic);

    Log.e(TAG, "Icon Changed");
    return super.onPrepareOptionsMenu(menu);
}

В результате значок остается пустым в BottomNav, но появляется на панели действий.

Ожидаемый результат: значок BottomNav будет изображением, показанным в правом верхнем углу.

Спасибо

РЕДАКТИРОВАТЬ!

Проблема устранена после раздувания макета main_activity, содержащего BottomNavView.

Теперь проблема с изображением, которое не отображается должным образом, прикрепил скриншот (изображение серое, а не показывает значок, как на панели действий на первом изображении):

Редактировать 2

Значок по-прежнему серый, а не показывает растровое изображение. Добавлен:

MenuItemCompat.setIconTintMode(bottomNavigationView.getMenu().getItem(2), PorterDuff.Mode.CLEAR);

Но он все еще отображается, как на картинке ниже

Редактировать 3

Исправлена ​​проблема с помощью:

        bottomNavigationView.setItemIconTintList(null);

Важно отметить, что setTitle также не работает с BottomNav. но setBackground работает.

James Gyps 04.10.2022 08:37
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
1
58
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я не уверен, что onPrepareOptionsMenu вызывается для нижней панели навигации.

Вам нужно будет обновить значок меню навигации из метода onCreate этого действия.

См. ниже код,

val menu = navigation.menu
val menuItem = menu.findItem(R.id.navigation_notifications) // find particular menu-item using its ID.
menuItem?.icon = this.bitmap_pic

Решение для серого оттенка значка, добавить строку ниже.

MenuItemCompat.setIconTintMode(menuItem, PorterDuff.Mode.DST)

На самом деле нашел проблему, setContentView(R.layout.activity_main) устранил проблему. я отредактировал вопрос

James Gyps 04.10.2022 08:50

A Все еще не работает, обновил свой вопрос

James Gyps 04.10.2022 12:02

Другие вопросы по теме