Значки xml отображаются белым цветом под apilvl 24 и 25 - PullRequest
0 голосов
/ 15 сентября 2018

У меня странный на этот раз ... Я использую для ящика Vector Drawables (впервые). Я установил в build.gradle, что я хотел бы использовать библиотеку поддержки для отображения моих векторов. В зависимости от уровня API значки теперь меняют свой цвет. В Android-Studio превью все нормально и черное, как и должно быть.

Я прочитал Учебное пособие на developers.android.com и Учебное пособие на thefuntasty.com . И советы и подсказки не помогли.

На первом рисунке показан ящик с уровнем API 24, а второй - с уровнем API 27. На уровне API 23 то же самое произошло. Мой реальный телефон (Huawei P9 plus) с Android 7.0 отображает значки белого цвета.

API-Level-24

API-Level-28

Соответствующие build.gradle части:

android {
    compileSdkVersion 26
    buildToolsVersion '27.0.3'
    defaultConfig {
        applicationId "..."
        minSdkVersion 24
        targetSdkVersion 26 // An internal room component does depend on it, so I must not change it.
        ...

        // User added
        vectorDrawables.useSupportLibrary = true
}
dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    api 'com.android.support:appcompat-v7:26.1.0'
    api 'com.android.support:design:26.1.0'
    api 'com.android.support:support-vector-drawable:26.1.0'
    api 'com.google.android.gms:play-services-maps:15.0.1'

    ... (Room & other components)
}

Также здесь код для одного из векторов:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:autoMirrored="true"
    android:viewportHeight="24.0"
    android:viewportWidth="24.0">
    <path
        android:fillColor="#FF000000"
        android:pathData="M10,20v-6h4v6h5v-8h3L12,3 2,12h3v8z" />
</vector>

На него есть ссылка в файле макета ящика:

<item
     android:id="@+id/nav_main"
     android:icon="@drawable/ic_home_black_24dp"
     android:title="@string/nav_bar_reverse_wherigos"
     android:tint="@color/text_color_primary" />

EDIT: Я посмотрел глубже в проблеме. Теперь я могу сказать, что значение navigationView.getItemIconTintList().getDefaultColor() отличается в API 24 и 27. Мой вопрос решается, когда я понимаю, почему это так, чтобы я мог внести соответствующие изменения в свой макет ...

РЕДАКТИРОВАТЬ 2: Я могу переопределить цвет на всех уровнях API с помощью app:itemIconTint="#000000" или navigationView.setItemIconTintList(null);, но тогда значок всегда черный, а не синий при выборе (как на картинке). Также меня очень сильно интересует, почему значение по умолчанию меняется с уровнями API.

...