首页 > 解决方案 > 使用 StaggeredGridLayoutManager 防止图片移动

问题描述

我和这篇文章有同样的问题。

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它,即使它做得更快,我们仍然可以看到变化,这很丑陋。

谢谢

标签: androidandroid-recyclerviewandroid-imageviewstaggeredgridlayoutmanager

解决方案


推荐阅读