如何为BottomNavigationView中的所有图标设置不同的颜色?

3
我正在制作一个带底部导航栏的Android应用程序。我知道如何将所有图标设置为相同的颜色,但我想做与image中相同的事情(我想让每个图标都有不同的颜色),尽管Material Design指南不建议这样做。
这是一个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>

在activity.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:我的 MainActivity.java 中有与 BNV 相关的这些行:

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

我尝试在 FragmentName.java 中添加

setHasOptionsMenu(true);

并在同一类中重写 public void onCreateOptionsMenu(Menu menu, MenuInflater inflater),使用 @Vincent 给出的代码并附加内容。

    super.onCreateOptionsMenu(menu, inflater);

对于这个问题,我需要更多的上下文信息才能提供准确的翻译。请告诉我这段文字所在的上下文是什么,以及其他相关信息。
1个回答

0

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

我就是无法让onCreateOptionsMenu被调用(日志显示它没有被调用)。我谷歌了很多,但没有找到任何可行的解决方案。已经编辑了更多的代码来说明问题。 - Just Spam
1
@Vince 无论如何,你不能以这种方式更改文本颜色。 - Gabriele Mariotti
@GabrieleMariotti 我认为问题是要更改图标的颜色,这种方法对我有效。 - Vince VD
@Vince 请同时查看相关的图片。 - Gabriele Mariotti
@GabrieleMariotti之前没看到图片,所以我猜这只是为了图标。 - Vince VD
显示剩余2条评论

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