【发布时间】:2018-10-29 12:44:51
【问题描述】:
我在布尔标志的基础上使用DataBinding 到tint 的矢量可绘制ImageView。此代码适用于 >=21 版本。但在
<androidx.appcompat.widget.AppCompatImageView
android:tint="@{model.nextEnabled ? @color/primary : @color/silver}"
app:srcCompat="@drawable/ic_right_blue_24dp"
/>
这里的ic_right_blue_24dp 是一个可绘制的矢量。
检查绑定类后,我可以看到
if(getBuildSdkInt() >= 21) { this.mboundView1.setImageTintList(androidx.databinding.adapters.Converters.convertColorToColorStateList(modelBackEnabledMboundView1AndroidColorPrimaryMboundView1AndroidColorSilver)); }
我已经尝试了所有我能想到并能找到的方法。
- AppCompatImageView
- 图像视图
app:srcCompatandroid:srcapp:tintvectorDrawables.useSupportLibrary = trueAppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
在这里我必须告诉你,使用常规 tint 而不使用 binding,所有事情都可以正常工作。
【问题讨论】:
-
测试用例
app:tint -
是的,我已经尝试过了,它会导致错误。
:Cannot find the setter for attribute 'app:tint' with parameter type int on androidx.appcompat.widget.AppCompatImageView. -
你试过这个v7/widget/AppCompatImageView吗?
<android.support.v7.widget.AppCompatImageView app:tint="..." ... /> -
@Mykhailo 不,我已经迁移到
AndroidX,我相信AndroidX和Support的类没有区别。因为AndroidX只是一个重命名过程。 stackoverflow.com/q/51280090/6891563
标签: android android-databinding