我和这篇文章有同样的问题。
http://i.imgur.com/FUapm2K.gif?1
StaggeredGridLayoutManager 和移动项目
但是我无法理解答案,这是我在OnBindViewHolder()
适配器方法中调用的方法。
private void setRealSize(Post post, int position) {
Log.d(TAG, "setRealSize: width " + post.getWidthPost());
Log.d(TAG, "setRealSize: height : " + post.getHeightPost());
int percentWidth = (maxWidth / 3);
double scaleFactor = (double) percentWidth / (double) post.getWidthPost();
Log.d(TAG, "setRealSize: factor " + scaleFactor);
Log.d(TAG, "setRealSize: height " + scaleFactor * post.getHeightPost());
picturePreview.getLayoutParams().width = percentWidth;
picturePreview.getLayoutParams().height = (int) (scaleFactor * post.getHeightPost());
}
我的图片已完美调整大小并保持其原始纵横比。但是当我再次向上滚动时,我得到了移动错误......
即使我会为每张图片“存储”这些值,如果不使用这些值,我应该在哪里以及如何再次使用这些值getLayoutParams().height
?
在我Fragment
包含回收器视图的我只有 StaggeredGridLayoutManager 的以下代码行:
gridLayoutManager = new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL);
即使我删除了DefaultAnimator
它,即使它做得更快,我们仍然可以看到变化,这很丑陋。
谢谢