矢量Drawable不覆盖

问题描述 投票:0回答:1

我有以下目录结构:

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

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

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

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

android compatibility android-vectordrawable
1个回答
0
投票

感谢@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));
}

我仍然认为这是一个错误,因为它应该遵循与图像资产相同的逻辑,我将为此记录谷歌的错误。

© www.soinside.com 2019 - 2024. All rights reserved.