【问题标题】:Disable icon colorStateList in NavigationView在 NavigationView 中禁用图标 colorStateList
【发布时间】:2015-08-17 17:59:29
【问题描述】:

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

它看起来像新的NavigationView,除非我为列表中使用的图标指定ColorStateList,否则将为我创建一个默认的ColorStateList,它使用我在我的主题中定义的colorPrimary 等。

我有没有办法强制 NavigationView 停止为我的图标着色?

【问题讨论】:

    标签: android material-design android-design-library android-navigationview


    【解决方案1】:

    我有没有办法强制 NavigationView 停止着色我的 图标?

    确实有。您可以使用NavigationView.setItemIconTintList 以编程方式执行此操作。

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

    以编程方式

    yourNavigationView.setItemIconTintList(null);
    

    来自XML

    <android.support.design.widget.NavigationView
        ...
        app:itemIconTint="@android:color/black" 
        ... />
    

    结果

    【讨论】:

    • 以编程方式设置它是我让它工作的唯一方法。不知道为什么我没有尝试。我尝试在 xml 中将其设置为 null ,但这并没有做任何事情。无论如何,谢谢哥们!
    • 在 XML 中应用颜色时需要引用颜色。例如,@android:color/black。这与ColorStateListNavigationView 中的初始化方式有关。
    • 是的,我在源代码中看到了这一点。但还是没想到只用代码来做.. :)
    • 不错!我对此感到恼火,但没有尝试在代码中将其设置为空。谢谢让我们注意到这个。非常感谢!
    • 正确的方法是 XML 中的app:itemIconTint="@null",但NavigationView 的构造函数会检查hasValue,从而消除了这种可能性。在 XML 中设置 black 与以编程方式设置 null 不同。如果图标中间不透明,就会变成黑色的斑点。
    猜你喜欢
    • 2016-07-22
    • 2022-01-20
    • 2018-07-02
    • 2021-11-18
    • 1970-01-01
    • 2016-03-02
    • 1970-01-01
    • 1970-01-01
    • 2011-09-17
    相关资源
    最近更新 更多