我有:
- 一个使用GridLayoutManager的recyclerview
- 网格项布局中有一个ImageView(高度为wrap_content,宽度为match_parent),ImageView被包裹在一个Framelayout中,因此图像底部居中对齐|水平中心对齐
- Picasso从Web异步加载图片到ImageView中
当前情况: 图像已加载到imageView中,但imageView的大小是回收的网格项imageView的大小。
我想要实现的目标: 在将图像加载到imageView中后,重新调整imageView的大小(重绘)。
我尝试过的方法:
- notifyItemChanged() - 理论上可以解决问题,但我无法检查当前网格项视图是否在布局状态下,因此我的应用程序崩溃了(IllegalStateException)。
- 使用Callback监听Picasso的加载,在onSuccess()中检查imageview drawable的aspectratio并尝试使用requestLayout()重新调整imageview本身的大小。没有成功。(好吧,它确实起作用,但只有在有动画或触发布局重绘的其他东西时才会起作用。如果没有任何东西,则不会重绘imageview。)
- 使用Callback监听Picasso的加载,在onSuccess()中启动一个动画来动态改变imageview的alpha值。这将触发重绘。但这有时有效,有时无效(我不知道为什么)。