我花了一整天时间来解决这个问题:(
在我的Android应用程序中,我从服务器下载不同大小的图像。例如,图像A的尺寸为500x330,图像B的尺寸为500x700,依此类推。我还在图片下方添加了一些文字。我正在使用500x400大小的占位符图像。
我可以使用Glide加载图像并显示占位符:
XML:
<android.support.v7.widget.AppCompatImageView
android:id="@+id/myImage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:scaleType="fitXY" />
科特林:
GlideApp.with(myImage.context)
.load(url)
.skipMemoryCache(false)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(myImage)
问题:
在加载图像时,占位符显示为400高度。完成加载后,用户将看到更改高度从400到700。然后用户还会看到图像下方的文字向上或向下跳跃取决于图像大小:(
题:
如何在我想要在UI上显示的每个加载图像缩放或保持占位符的大小相同。这样在加载后UI不会改变?
注意:我不想像我的layout_height =“100dp”那样硬编码静态图像的高度。它们应保持相同的尺寸和无线电。
如果Glide不能那样做。你们还有其他建议吗?
非常感谢。
不知道这个问题是否仍然有效。如果你将fitCenter()设置为Glide,我希望它会对你有所帮助。这将使图像适合占位符而不更改尺寸。 Buuut ....如果照片没有像占位符图像那样的确切宽高比,你会看到会有一些空白区域。
如果它不能正常工作,您还可以尝试通过设置占位符图像的宽度和高度来覆盖整个imageView的宽度和高度。
.override(w, h) // set exact size
.fitCenter() // keep memory usage low by fitting into (w x h) [optional]
哪里
w = placeholderDrawable width
h = placeholderDrawable height
我真的希望这会有所帮助。
更多细节here