我有以下目录结构:
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"/>
奇怪的是,在使用Android Studio预览器时,API <23和API 24及更高版本的徽标正确显示,但在任何模拟器或实时设备上都没有。
感谢@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));
}
我仍然认为这是一个错误,因为它应该遵循与图像资产相同的逻辑,我将为此记录谷歌的错误。