在NavigationView中禁用icon colorStateList

tsk*_*bru 31 android material-design android-design-library android-navigationview

在我今天的应用程序中,我的图标不仅有一种颜色,而且在某些情况下有两种颜色,具体取决于我的应用程序中的数据状态.这意味着我无法使用默认的着色行为NavigationView.

它看起来像新的NavigationView,除非我ColorStateList为列表中使用的我的图标指定了一个默认值ColorStateList,我将使用colorPrimary我的主题中定义的我的等号.

我没办法强迫NavigationView停止着色我的图标吗?

adn*_*eal 102

我没办法强迫NavigationView停止着色我的图标吗?

肯定有.您可以使用以编程方式执行此操作NavigationView.setItemIconTintList.

您可以XML使用NavigationView.itemIconTint属性在布局中执行此操作.

编程

yourNavigationView.setItemIconTintList(null);
Run Code Online (Sandbox Code Playgroud)

XML

<android.support.design.widget.NavigationView
    ...
    app:itemIconTint="@android:color/black" 
    ... />
Run Code Online (Sandbox Code Playgroud)

结果

结果

  • 以编程方式设置它是我能够让它工作的唯一方法.不知道为什么我没试过.我尝试在xml中将其设置为null但是没有做任何事情.无论如何,谢谢伙计! (5认同)
  • 太好了!我对此感到恼火,但没有尝试在代码中将其设置为null.谢谢让我们注意到这个.非常感激! (2认同)
  • 正确的方法是在XML中使用`app:itemIconTint ="@ null"`,但`NavigationView`的构造函数检查`hasValue`可以消除这种可能性.在XML中设置`black`不一样,因为以编程方式设置`null`.如果图标在中间不透明,则变为黑色斑点. (2认同)