Оттенок не работает <21 версия в DataBinding - PullRequest
0 голосов
/ 29 октября 2018

Я использую 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.

1 Ответ

0 голосов
/ 29 октября 2018

все еще есть пользовательская привязка данных . даже точно метод, как и просили:

@BindingMethods({
    @BindingMethod(
        type = "androidx.appcompat.widget.AppCompatImageView",
        attribute = "android:tint",
        method = "setImageTintList"
    )
})
...