【问题标题】:Changing Color of Custom Icons in Navigation Drawer Android Studio更改导航抽屉 Android Studio 中自定义图标的颜色
【发布时间】:2017-12-14 00:44:46
【问题描述】:

我在默认导航抽屉中显示图像时遇到了问题,因为它们似乎仍然具有默认的灰色。

Original Menu

Menu With Custom Icons

关于如何让导航抽屉显示图像的实际颜色有什么建议吗?

activity_main_drawer.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:showIn="navigation_view">

<group android:checkableBehavior="single">
    <item
        android:id="@+id/nav_camera"
        android:icon="@drawable/a0279566532_10"
        android:title="Wallpapers" />

    <item
        android:id="@+id/nav_slideshow"
        android:icon="@drawable/ic_menu_slideshow"
        android:title="Featured User Artwork" />

    <item
        android:id="@+id/nav_manage"
        android:icon="@mipmap/icon24"
        android:title="About" />
    <item
        android:id="@+id/nav_send"
        android:checkable="false"
        android:icon="@mipmap/icon21"
        android:title="Send" />


</group>

谢谢。

【问题讨论】:

  • 您可以使用彩色图像而不是材料图像。这可能是简单的解决方案

标签: android android-studio icons navigation-drawer


【解决方案1】:

将您的图标放入可绘制文件并在 xml 文件中使用它!

要获得自定义彩色图像,您可以下载并使用自己的图像,也可以像这样更改 xml 文件中的图标颜色:

app:itemIconTint="#color"

希望对你有帮助!

【讨论】:

  • 如果我的图片使用了不止一种颜色怎么办?
  • 灰色似乎继续存在。除非我添加 app:itemIconTint="#color" 但是这个选项只允许我选择一种颜色。
  • 抽屉的图标只能有一种类型的颜色,所以如果你的图像是多色的,它将采用默认颜色,直到你更改此颜色为 a
【解决方案2】:

它似乎与 navigationView.setItemIconTintList(null);在 MainActivity.java 中!

再次感谢您的帮助。

【讨论】:

    【解决方案3】:

    这是一个老问题,但我认为有人会从我的回答中受益。在导航视图中,图标具有默认的灰色,除非您想为菜单中的所有图标设置颜色,否则您无法在 xml 中更改它,如下所示:

    app:itemIconTint="@color/someColor"

    我找到的唯一解决方案是:

        val navView : NavigationView = findViewById<NavigationView>(R.id.nav_view)
        val normalDrawable : Drawable = navView.menu.findItem(R.id.menu_item).icon
        val wrapDrawable = DrawableCompat.wrap(normalDrawable)
        DrawableCompat.setTint(wrapDrawable, resources.getColor(R.color.someColor))
    
        navView.menu.findItem(R.id.menu_item).setIcon(wrapDrawable)
    

    这里是更深入地解释这一点的帖子链接:https://futurestud.io/tutorials/android-quick-tips-8-how-to-dynamically-tint-actionbar-menu-icons

    Post 是关于操作栏菜单图标的,但此代码也适用于导航抽屉图标。

    【讨论】:

      【解决方案4】:

      如果要显示所有图标的原始颜色,请执行以下操作:

      mNavigationView.setItemIconTintList(null);
      

      如果要显示特定图标的原始颜色,请执行以下操作:

      navigationView.getMenu()
                  .findItem(R.id.your_item_id)
                  .getIcon()
                  .setColorFilter(Color.parseColor("#00000000"), PorterDuff.Mode.SRC_ATOP);
      

      【讨论】:

        猜你喜欢
        • 2016-12-22
        • 2015-10-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多