这次我有一个奇怪的...我正在使用抽屉Vector Drawables(第一次)。我在build.gradle
中设置了我想使用支持库来显示我的矢量。现在,根据API级别,图标会更改其颜色。在Android-Studio预览中,一切正常,如预期的那样黑。
我阅读了developers.android.com的教程和thefuntasty.com的教程。提示和提示都无济于事。
第一张图片显示了API级别为24的抽屉,第二张图片显示了API级别27。在API级别23下也发生了同样的情况。我的装有Android 7.0的真实手机(Huawei P9 plus)显示白色图标。
相关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" />
编辑:
我对这个问题有更深入的了解。现在我可以说navigationView.getItemIconTintList().getDefaultColor()
的值在API 24和27上是不同的。当我理解为什么会这样时,我的问题就解决了,以便可以对布局进行适当的更改... < / p>
编辑2:
我可以使用app:itemIconTint="#000000"
或navigationView.setItemIconTintList(null);
覆盖所有API级别的颜色,但是选择后该图标始终为黑色,而不是蓝色(如图所示)。另外,我很担心为什么默认值会随着API级别而更改。