9

I use databinding to set the tint of my ImageView. And this is working well :

android:tint="@{plantEntity.isFavorite ? @color/favorite : @color/favorite_none}" />

The problem is android:tint is deprecated. When I try to use app:tint instead, I have this error :

Cannot find a setter for <android.widget.ImageView app:color> that accepts parameter type 'int'

If a binding adapter provides the setter, check that the adapter is annotated correctly and that the parameter type matches.

Why and what I have to do ? Create a BindingAdapter ?

Jéwôm'
  • 3,903
  • 4
  • 34
  • 69

3 Answers3

8

It's working and using androidx.appcompat.widget.AppCompatImageView.

And app:tint is no more deprecated.

Jéwôm'
  • 3,903
  • 4
  • 34
  • 69
7

similar to what has been discussed on Tint does not work <21 version in DataBinding

add a binding adapter:

@JvmStatic
@BindingAdapter("app:tint")
fun ImageView.setImageTint(@ColorInt color: Int) {
  setColorFilter(color)
}

and you don't have to use any compat if your minSdk is > 21 (which is a good deal anyway in 2021 you should not support anything below 26)

anyhow .. this seems to be a fug on the androidx.databinding expression https://issuetracker.google.com/issues/152953070

user924
  • 5,286
  • 3
  • 35
  • 97
childno͡.de
  • 4,602
  • 4
  • 29
  • 53
0

Use androidx.appcompat.widget.AppCompatImageView with android:tint.

divonas
  • 902
  • 1
  • 9
  • 11