Android setBackgroundTintList on pre-lollipop devices

前端 未结 3 1354
日久生厌
日久生厌 2020-12-29 07:26

I\'m working with FloatingActionButton. The user should be able to switch the FAB background color within a onClick Event.

However, the rec

相关标签:
3条回答
  • 2020-12-29 07:52

    From XML, you can use

    card_view:backgroundTint="@color/your_color"
    

    where card_view is xmlns:card_view="http://schemas.android.com/apk/res-auto"

    0 讨论(0)
  • 2020-12-29 07:55

    You can use also setSupportBackgroundTintList

    Applies a tint to the background drawable. Does not modify the current tint mode, which is SRC_IN by default.

    Subsequent calls to View.setBackground(Drawable) will automatically mutate the drawable and apply the specified tint and tint mode.

    Also take a look on ViewCompat.setBackgroundTintList()

    Applies a tint to the background drawable.

    This will always take effect when running on API v21 or newer. When running on platforms previous to API v21, it will only take effect if view implement the TintableBackgroundView interface.

    I found a solution here on SO that I've used before and is this:

    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);
      }
    }
    

    It works for me I hope it works for you too.

    0 讨论(0)
  • 2020-12-29 07:58

    simple:

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

    fab is your FloatingActionButton of course and 0xFF4CAF50 just a example color

    0 讨论(0)
提交回复
热议问题