我有一个带有图像的Recycler View,其中图像的宽度是可变的,但高度是固定的。但是,滚动会导致所有图像具有相同的宽度。我的猜测是视图持有者宽度没有正确更新,它只是使用前一个[我正在使用异步图像加载器]。但是,清除图像drawable,将其设置为GONE然后再次VISIBLE也不起作用。但是,如果我关闭屏幕并将其重新打开,则会重新正确绘制。
我的视图持有者项目中有以下内容。请注意,高度是固定的,但宽度是wrap_content。如果高度不固定并且是wrap_content,则此问题不会重现。
这是我的item_view.xml的样子:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/image_view"
android:layout_width="wrap_content"
android:layout_height="150dp"
android:scaleType="centerInside"/>
</RelativeLayout>
答案 0 :(得分:1)
CENTER_INSIDE:均匀缩放图像(保持图像的外观 比率),以便图像的尺寸(宽度和高度)都是 等于或小于视图的相应尺寸(减去 填充)。
RecycleView
使用相同的xml
来填充所有项目,因为当您使用固定layout_height
和scale_type
center_inside
时,它会在原始图片中找到不同的维度,它会在缩放后自动将谁的图像放入项目中。
如果要为不同的图像维度使用不同的内容大小,则必须使用custom项目视图。
答案 1 :(得分:1)
CENTER_INSIDE:均匀缩放图像(保持图像的纵横比),使您的imageview始终具有height = 150dp,但根据图像宽高比,每个图像的宽度将不同,因此宽度将为= 150×(original_image_width×original_image_height) dp。尝试使用imageview scaltype fitXY,它保持高度150dp,宽度等于原始图像高度。