我正在使用DataBinding根据布尔标志在ImageView
上对矢量图进行tint
。这段代码适用于Android版本>=21,但在版本<21时会出现错误。
<androidx.appcompat.widget.AppCompatImageView
android:tint="@{model.nextEnabled ? @color/primary : @color/silver}"
app:srcCompat="@drawable/ic_right_blue_24dp"
/>
这里的ic_right_blue_24dp
是一个矢量图。
检查绑定类后,我发现<21版本的代码没有生成。
if(getBuildSdkInt() >= 21) {
this.mboundView1.setImageTintList(androidx.databinding.adapters.Converters.convertColorToColorStateList(modelBackEnabledMboundView1AndroidColorPrimaryMboundView1AndroidColorSilver));
}
我已经尝试了我所能想到和找到的所有方法。
- AppCompatImageView
- ImageView
app:srcCompat
android:src
app:tint
vectorDrawables.useSupportLibrary = true
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
app:tint
- AskNileshAndroidX
,我相信AndroidX
和Support
的类别没有区别。因为AndroidX
只是一个重命名的过程。https://dev59.com/MlUK5IYBdhLWcg3wySfB - Khemraj Sharma