大家好,并提前感谢您的反馈。
我开发了一个应用程序(minSdk 24,所以应该没有理由 vectorDrawables.useSupportLibrary = true
在 gradle 中设置标志),它在 Android Studio 中使用了几个 svg 转换为 XML 矢量绘图。到目前为止,一切都很好。
我在 Imageview(尺寸 60dp x 60dp,比如 Imageview“A”)中显示这样的可绘制对象,而 Imageview 又位于片段“A”内的 recyclerview 的视图中。完全没有问题。通过单击 recyclerview 项目,用户打开一个新片段“B”(请注意,片段 B 已添加到布局中 - 它不会替换片段 A),其布局具有更高尺寸(100dp x 100dp)的 Imageview“B”,即将显示Imageview A的相同drawable。这里也很好。顺便说一句,当用户返回到片段 A 时(仍然添加,只是位于片段 B 下方,当用户点击返回按钮时,片段 B 会被删除)图像视图 A 中的图像,在 recyclerview 中,看起来非常像素化和低质量。
我试图从片段 B 中删除 Imageview B,并且 Imageview A 中显示的图像不再像素化。如果我为两个 Imageview 使用两个不同(但相同)的 xml 文件,则同样适用。
感觉Android有点“缓存”xml可绘制的新尺寸,因此试图使新的xml尺寸适应Imageview B,从而降低其质量。在用户操作后以编程方式膨胀 Imageview 时,我得到相同的行为。
我可以通过使用重复的 XML 文件来解决这个问题,但这感觉像是一个糟糕的解决方案,我真的很想更好地了解我的设置有什么问题。
这是 Recyclerview 中 Imageview 的代码:
<ImageView
android:id="@+id/icon"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_marginStart="2dp"
android:scaleType="fitXY"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
这是 Fragment B 布局中 Imageview 的代码:
<ImageView
android:id="@+id/wiki_focus_icon"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginStart="40dp"
android:layout_marginTop="40dp"
android:layout_marginEnd="40dp"
android:scaleType="fitXY"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
我正在使用我的代码以编程方式设置图像视图的图像
icon.setImageResource(R.drawable.mydrawable)
这是可绘制向量属性之一的示例。
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="100dp"
android:height="100dp"
android:viewportWidth="100"
android:viewportHeight="100">
当然,我显然尝试过使用矢量的尺寸,但没有成功(实际上,这对我来说没有多大意义)。如有需要,请随时向我询问更多代码。