【问题标题】:Android setBackgroundTintList on pre-lollipop devices棒棒糖前设备上的 Android setBackgroundTintList
【发布时间】:2016-02-11 20:31:00
【问题描述】:

我正在与FloatingActionButton 合作。 用户应该能够在 onClick 事件中切换 FAB 背景颜色。

但是,对 setBackgroundTintList 的推荐调用似乎只兼容 21+ API。

我如何正确地在棒棒糖之前的设备上进行操作?有什么替代品我可以使用吗?

提前致谢。

【问题讨论】:

  • 试试这个answer
  • @Skizo 谢谢!不知道 ViewCompat 调用(setSupportBackgroundTintList 都不知道)。请写下您自己的答案,以便我将其标记为已接受!
  • 请查看this answer。

标签: android floating-action-button setbackground


【解决方案1】:

从 XML,你可以使用

card_view:backgroundTint="@color/your_color"

其中card_view 是xmlns:card_view="http://schemas.android.com/apk/res-auto"

【讨论】:

    【解决方案2】:

    你也可以使用setSupportBackgroundTintList

    对背景可绘制对象应用色调。不修改当前的着色模式,默认为SRC_IN。

    对 View.setBackground(Drawable) 的后续调用将自动改变可绘制对象并应用指定的色调和色调模式。

    也看看ViewCompat.setBackgroundTintList()

    将色调应用到背景可绘制对象。

    这将始终在 API v21 或更高版本上运行时生效。在API v21之前的平台上运行时,只有view实现了TintableBackgroundView接口才会生效。

    我找到了一个我以前用过的解决方案here on SO,是这样的:

    public static void setButtonTint(Button button, ColorStateList tint) {
      if (Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP && button instanceof AppCompatButton) {
          ((AppCompatButton) button).setSupportBackgroundTintList(tint);
      } else {
          ViewCompat.setBackgroundTintList(button, tint);
      }
    }
    

    它对我有用,我希望它也对你有用。

    【讨论】:

    • 完美!正是我想要的!谢谢
    • 感谢投票并将其标记为正确答案,如果这是您需要的:P 很高兴听到这个消息。
    • 但是 FloatingActionButton 没有实现 TintableBackgroundView,所以 ViewCompat.setBackgroundTintList() 不适用于 API
    • 我在使用 AppCompatButton.setBackgroundTintList() 时收到 lint 警告 AppCompatButton.setSupportBackgroundTintList 只能从同一个库组中调用 (groupId=com.android.support)
    • @starkej2 您可以发布与您的问题相关的图像的问题并在此处链接您的问题链接吗?我会尽力帮助你:D
    【解决方案3】:

    简单:

    fab.setBackgroundTintList(ColorStateList.valueOf(0xFF4CAF50));
    

    fab 当然是你的FloatingActionButton 而0xFF4CAF50 只是一个示例颜色

    【讨论】:

    • 我想你没明白我的意思。检查@Skizo 答案以获得进一步说明。顺便谢谢你! :)
    • 这种方式向后兼容
    • @Matteo FAB 实现来自支持库,它确实支持向后兼容性。下面setBackgroundTintList() 使用不同的 impl 进行 pre-lolipop。在 KitKat 设备上得到验证。
    猜你喜欢
    • 2018-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2016-08-14
    • 1970-01-01
    • 1970-01-01
    • 2015-02-26
    相关资源
    最近更新 更多