android - 矢量可绘制不覆盖
问题描述
我有以下目录结构:
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));
}
我仍然觉得这是一个错误,因为它应该遵循与图像资产相同的逻辑,我将为此向 Google 记录一个错误。
推荐阅读
- android - 选择在recyclerview行kotlin中按下哪个按钮
- postgresql - PostgreSql 中的临时文件
- android - React Native Module (Android) - TypeError: undefined is not an object
- javascript - 如何注册到关闭按钮元素的 onClick 事件
- android - 每当从通知中按下播放时,让 ExoPlayer 寻找最后一个时间点?
- elasticsearch - ElasticSearch 根据桶长度过滤结果(桶中唯一键的数量)
- jquery - 带有选择和关键字搜索的jQuery同位素过滤器不能一起工作
- mysql - Grafana世界地图面板:mysql中的经纬度无法在地图上显示点
- java - 合并两个不同类型对象的列表
- flutter - 如何在 Flutter 中向 TextFormField 添加阴影