在使用StaggeredGridLayoutManager时停止移动项目

我在android中使用staggredGridLayoutManager的recyclerview。 问题是,有时当滚动项目移动到适合在屏幕上。 通常没有什么可担心的,但在我的情况下,它把所有的东西都搞乱了! 那么是否有阻止这种行为呢? 不只是animation。 整个项目重新安排的东西。 谢谢

Solutions Collecting From Web of "在使用StaggeredGridLayoutManager时停止移动项目"

在Randy的答案中使用ImageViewbuild议你可以用Glide做同样的事情:

Glide.with(context) .load(imageURL) .asBitmap() .dontAnimate() .fitCenter() .diskCacheStrategy(DiskCacheStrategy.RESULT) .into(new SimpleTarget<Bitmap>() { @Override public void onResourceReady(Bitmap bitmap, GlideAnimation anim) { if (bitmap != null) { holder.image.setHeightRatio(bitmap.getHeight()/bitmap.getWidth()); holder.image.setImageBitmap(bitmap); } } }); 

如果您正在使用毕加索,那么首先创build一个自定义ImageView

 public class DynamicHeightImageView extends ImageView { private double mHeightRatio; public DynamicHeightImageView(Context context, AttributeSet attrs) { super(context, attrs); } public DynamicHeightImageView(Context context) { super(context); } //Here we will set the aspect ratio public void setHeightRatio(double ratio) { if (ratio != mHeightRatio) { mHeightRatio = ratio; requestLayout(); } } public double getHeightRatio() { return mHeightRatio; } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { if (mHeightRatio > 0.0) { // set the image views size int width = MeasureSpec.getSize(widthMeasureSpec); int height = (int) (width * mHeightRatio); setMeasuredDimension(width, height); } else { super.onMeasure(widthMeasureSpec, heightMeasureSpec); } } } 

然后在你的onBindViewHolder中

 Picasso.with(context).load(modal.image.mediumUrl).into(holder.profileImage, new Callback() { @Override public void onSuccess() { holder.profileImage.setHeightRatio(holder.profileImage.getHeight()/holder.profileImage.getWidth()); } @Override public void onError() { } });