Я использую DataBinding - tint
вектор, который можно нарисовать из ImageView
на основе логического флага. Этот код хорошо работает для> = 21 версии. Но не в версии <21. </p>
<androidx.appcompat.widget.AppCompatImageView
android:tint="@{model.nextEnabled ? @color/primary : @color/silver}"
app:srcCompat="@drawable/ic_right_blue_24dp"
/>
Здесь ic_right_blue_24dp
- это векторное изображение.
После проверки класса привязки я увидел, что код для версии <21 не генерируется. </p>
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);
Здесь я должен сказать вам, что все работает, используя обычный tint
без binding
.