android - 使用 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
它,即使它做得更快,我们仍然可以看到变化,这很丑陋。
谢谢
解决方案
推荐阅读
- c++ - 根据继承更改对象类型
- javascript - “无法设置未定义的属性‘颜色’”
- php - LARAVEL:重新排队工作是个坏主意吗?
- email - 转发电子邮件保留收件人(INDY 和 Delphi)
- reactjs - 更新自身内部可观察到的 mobx 存储会导致“无法读取
未定义的' - reactjs - 反应:尝试从 MovieDB API 获取资源时出现 NetworkError
- microsoft-graph-api - 检索计划中的任务的权限
- reactjs - 为什么渲染延迟
- spring-boot - 无法通过枚举过滤:org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "ROLES" not found; SQL 语句
- python - 使用 Python 提取 JSON 值