使用数据绑定设置ImageView的色调
我使用数据绑定来设置我的ImageView. 这运行良好:
android:tint="@{plantEntity.isFavorite ? @color/favorite : @color/favorite_none}" />
问题是android:tint已弃用。当我尝试使用时app:tint,出现此错误:
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.
为什么以及我必须做什么?创建一个BindingAdapter?
回答
它正在工作并使用androidx.appcompat.widget.AppCompatImageView.
并且android:tint不再被弃用。
回答
类似于在Tint 上讨论的内容在 DataBinding 中不起作用 <21 版本
添加绑定适配器:
@BindingAdapter("app:tint")
fun ImageView.setImageTint(@ColorInt color: Int) {
setColorFilter(color)
}
如果您的 minSdk > 21 ,您就不必使用任何兼容(无论如何,在 2021 年这很划算,您不应该支持低于 26 的任何内容)
无论如何..这似乎是androidx.databinding 表达式的 一个错误https://issuetracker.google.com/issues/152953070