首页 > 解决方案 > 矢量可绘制不覆盖

问题描述

我有以下目录结构:

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

我遇到的问题是v24版本ic_logo没有覆盖“默认”可绘制文件夹版本,并且应用程序在所有 API 版本上显示默认值。

我必须使用v24版本的原因是因为向量包含需要等的渐变,startX直到startYAPI 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"/>

奇怪的是,在使用 Android Studio 预览器时,API < 23 和 API 24 及更高版本的徽标可以正确显示,但在任何模拟器或实时设备上都不能正确显示。

标签: androidcompatibilityandroid-vectordrawable

解决方案


感谢@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 记录一个错误。


推荐阅读