我有一个Recyclerview显示来自外部存储的图片网格。在我测试的所有设备上,包括夏米,Nexus7,三星S3,一个+ 2,Moto G-2等,recyclerview正确显示图片。我正在使用Glide图像加载lib来加载图片。
我已使用下面的
设置了适配器savedPhotosGridLayoutManager = new GridLayoutManager(application, SPAN_COUNT);
savedPhotosGrid.setLayoutManager(savedPhotosGridLayoutManager);
savedPhotosGrid.addItemDecoration(new ItemOffsetDecoration(application, R.dimen.grid_save_spacing));
savedPhotosGrid.setAdapter(savedPhotosGridAdapter);
savedPhotosGrid.setHasFixedSize(true);
一行中的项目具有以下xml。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/item_recycler_view">
<ImageView
android:id="@+id/savedPhoto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:transitionName="imageScale" />
<ImageView
android:id="@+id/mask"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/savedPhoto"
android:layout_alignEnd="@+id/savedPhoto"
android:layout_alignLeft="@+id/savedPhoto"
android:layout_alignRight="@+id/savedPhoto"
android:layout_alignStart="@+id/savedPhoto"
android:layout_alignTop="@+id/savedPhoto"
android:background="@drawable/item_recycler_view"
android:clickable="true" />
</RelativeLayout>
我使用Glide将图像加载到此。
Glide.with(context).load(savedImageFilePaths.get(i)).override(100, 100).centerCrop().into(viewHolder.savedImage);
由于某些奇怪的原因,在Samsung S4上,recyclerview项目无法正确显示。行看起来被裁剪,应该是正方形(因为我正在加载100乘100的图像),是它的裁剪版本。宽度是正确的,而行的高度不正确(短于它应该)。
只有当我将xml中的值硬编码为100 dp×100 dp时,才会在S4上正确显示。这显然很奇怪,因为我测试应用程序的所有其他设备都清楚地正确显示了网格中的方形图像(recyclerview)。
这是一个错误,还是我错了什么地方/遗失了什么?
答案 0 :(得分:0)
我有类似的问题,这解决了我:
mImageView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
希望它有所帮助!