【问题标题】:Is there an equivalent to setColorFilter() in XML?XML 中是否有等效于 setColorFilter() 的方法?
【发布时间】:2012-10-30 11:03:40
【问题描述】:

我想知道是否可以在 View 的 XML 中设置 ColorFilter,或者是否唯一的方法是在 Java 中使用 setColorFilter()

【问题讨论】:

    标签: java android xml


    【解决方案1】:

    有;它被称为tint。它在View 上不可用,但在ImageViewImageButton 上可用。

    如果你想用selectorthis answer帮了我一堆。

    【讨论】:

    • 谢谢。正是我想要的 - 更改 ImageButton 的可绘制颜色。
    【解决方案2】:

    你可以使用:

    android:tint="@color/white"
    

    【讨论】:

      【解决方案3】:

      根据文档 http://developer.android.com/reference/android/graphics/ColorFilter.html ColorFilter 没有对应的 xml 版本。

      我还使用“颜色”和“过滤器”键在文档中搜索了属性 http://developer.android.com/reference/android/R.attr.html

      【讨论】:

      • 这是不正确的。 tintsetColorFilter 工作方式相同
      • @MartinKonecny 是的,但 tint 在 API
      • @AlexeyDmitriev tint 已添加到 API 1 中。请参阅我的答案以获取文档链接。在 API 21 中添加了tintMode
      【解决方案4】:

      没有等效的 xml,但在 API 级别 21 上,您可以使用 tint 属性。但我假设您不想针对 21 台以上的设备。至少在几年内不会。

      【讨论】:

      • imageview 上的色调在 support-v7 上运行良好,经过测试 2.3 和 4.4
      • 使用 app:tint="" 而不是 android:tint=""
      【解决方案5】:

      如果您想使用 tint 并支持旧版本,您可以将 com.android.support:appcompat-v7:23.2.1 添加到 build.gradle(不要忘记更新 Android SDK)

      感谢@sherpya 的提示!

      【讨论】:

      • 这是不正确的。 AppCompatImageView 不应显式使用,因为常规 Imageview 会自动“在后台”使用它。使用它根本不会有任何区别。 ImageView 也是唯一从 api 1 内置“色调”的视图(这意味着无论您针对的是哪个 Android 版本,都可以在其上设置 android:tint
      • 感谢修复我。当我在没有 AppCompatImageView 的情况下尝试它时,我认为它不起作用。编辑答案
      • Np,我自己也落入了同样的陷阱。但据我所知,使用支持库的开发人员不会向开发人员公开 tint,而只能通过设置主题。如果我错了,请告诉我
      猜你喜欢
      • 2019-09-12
      • 2011-03-20
      • 1970-01-01
      • 1970-01-01
      • 2018-07-19
      • 2010-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多