Как установить разные цвета для всех значков в BottomNavigationView? - PullRequest
0 голосов
/ 01 ноября 2019

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

Это Java-приложение, все работает хорошо. Мне просто нужно установить разные цвета для каждого значка на панели.

Файл .xml меню:

    <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/id1"
        android:icon="pathtoicon1"
        android:title="Text1" />
    <item
        android:id="@+id/id2"
        android:icon="@pathtoicon2"
        android:title="Text2" />
    <item
        android:id="@+id/id3"
        android:icon="@pathtoicon3"
        android:title="Text3" />

</menu>

В файле .xml активности у меня есть этот код, связанный с панелью:

<com.google.android.material.bottomnavigation.BottomNavigationView
    android:id="@+id/bottom_navigation"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    app:menu="@menu/bottom_navigation"
    android:background="?android:attr/windowBackground"/>

РЕДАКТИРОВАТЬ: я пытался изменить цвета векторных активов иконок, но безуспешно.

РЕДАКТИРОВАТЬ II: эти строки связаны с BNV в моем файле MainActivity.java

BottomNavigationView bottomNavigationView = findViewById (R.id.bottom_navigation);bottomNavigationView.setOnNavigationItemSelectedListener (navListener);

Я попытался добавить

setHasOptionsMenu (true);

к моему FragmentName.java и переопределитьоткрытый void onCreateOptionsMenu(Menu menu, MenuInflater inflater) в одном классе с кодом, заданным @Vincent и добавляющим к нему

    super.onCreateOptionsMenu(menu, inflater);

, но функция никогда не вызывается. Любая помощь?

1 Ответ

0 голосов
/ 01 ноября 2019

В onCreateOptionsMenu

  MenuItem menuItem1 = menu.findItem(R.id.id1);
  Drawable newIcon1 =  menuItem1.getIcon();
  newIcon1.setColorFilter(getResources().getColor(R.color.yourcolorincolorsxml), PorterDuff.Mode.SRC_IN);
  menuItem1.setIcon(newIcon1);

  MenuItem menuItem2 = menu.findItem(R.id.id1);
  Drawable newIcon2 =  menuItem2.getIcon();
  newIcon2.setColorFilter(getResources().getColor(R.color.yourcolorincolorsxml), PorterDuff.Mode.SRC_IN);
  menuItem2.setIcon(newIcon2);

  MenuItem menuItem3 = menu.findItem(R.id.id1);
  Drawable newIcon3 =  menuItem3.getIcon();
  newIcon3.setColorFilter(getResources().getColor(R.color.yourcolorincolorsxml), PorterDuff.Mode.SRC_IN);
  menuItem3.setIcon(newIcon3);
...