API 17和API 16中的RecyclerView高度问题 - Android

stu*_*d91 9 android android-recyclerview

我正在RecyclerView我的应用程序中实现显示一些东西.在我的LG Nexus 5(Android 5.1 M)上,如果我将目标sdk设置为16或17(基本上模拟api 16,17那些手机上发生的事情),我的行高度会发生显着变化.

但是,这不会发生在API 18或18+上.我无法弄清楚为什么会发生这种情况以及解决这个问题的最佳方法是什么.

还有一件事:ImageView在列表行中使用了一个.当我ImageView在服务器中加载图像时,会发生这种情况.我使用ImageLoader库来做到这一点.但是,如果我使用静态图像,那么我没有这个问题

Tre*_*ers 4

“如果我使用静态图像,那么我就不会遇到这个问题”当使用静态图像时,它们会在onLayout()您的ImageView. 在布局期间加载图像时,它会影响通道中测量的尺寸onMeasure()

当图像不是静态设置的(即通过网络异步下拉)时,不能ImageView依赖图像的大小来确定其测量的大小。加载图像后,它将缩小以适合现有的测量值ImageView

解决方案:

  • minHeight在您的ImageView或行布局上指定
  • ImageView或者在您的或行布局上指定固定高度

如果您知道行的大​​小,则应该使用固定高度。

有一些默认样式RecyclerView可以设置属性,例如minHeight行布局,这些属性可能因 API 版本而异。因此,无需显式设置固定值或minHeight您自己,您就可以看到跨 API 版本的不同行为。