Вектор, который можно перерисовать, не переопределяя - PullRequest
0 голосов
/ 26 февраля 2019

У меня следующая структура каталогов:

drawable/ic_logo.xml
drawable-v24/ic_logo.xml

Проблема, с которой я сталкиваюсь, заключается в том, что v24 версия ic_logo не переопределяет версию папки по умолчанию для рисования по умолчанию, и приложение отображаетпо умолчанию для всех версий API.

Причина, по которой я должен использовать версию v24, заключается в том, что вектор, содержащий градиент, требует startX, startY и т. д., которые недоступны до API 24.

Мой minSdkVersion равен 21, и я называю вектор с AppCompatImageView примерно так:

    <androidx.appcompat.widget.AppCompatImageView
        android:layout_width="80dp"
        android:layout_height="80dp"
        app:layout_constraintRight_toRightOf="parent"
        android:adjustViewBounds="true"
        android:src="@drawable/ic_logo"
        app:srcCompat="@drawable/ic_logo"
        app:layout_constraintTop_toTopOf="parent"/>

Как ни странно, логотип отображается правильно для API <23 и API24 и выше при использовании средства просмотра Android Studio, но не на каком-либо эмуляторе или живом устройстве. </p>

1 Ответ

0 голосов
/ 26 февраля 2019

Благодаря @ PankajKantPatel я реализовал «обходной путь» для этого.

if(Build.VERSION.SDK_INT <= Build.VERSION_CODES.M){
    logo.setImageDrawable(ResourcesCompat.getDrawable(getResources(), R.drawable.ic_logo, null));
}else{
    logo.setImageDrawable(ResourcesCompat.getDrawable(getResources(), R.drawable.ic_logo_24, null));
}

Я все еще чувствую, что это ошибка, поскольку она должна следовать той же логике, что и изображениеактив, я буду регистрировать ошибку с Google для этого.

...