Sto usando recyclerview con staggredGridLayoutManager in Android. Il problema è che a volte quando gli elementi in movimento si spostano per adattarsi allo schermo. Normalmente non è nulla di cui preoccuparsi, ma nel mio caso rovina tutto! Quindi c'è comunque modo di fermare questo comportamento? Non solo l'animazione. Gli oggetti interi che riordinano le cose. grazieInterrompe gli elementi di spostarsi quando si utilizza StaggeredGridLayoutManager
8
A
risposta
1
Se si utilizza Picasso poi Innanzitutto creare un ImageView personalizzato
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);
}
}
}
Poi, nel tuo 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() {
}
});
+0
Grazie mille, ho avuto lo stesso problema con Glide. –
2
Utilizzando l'ImageView suggerito nella risposta di Randy si può fare lo stesso con 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);
}
}
});
hai provato a usare mSGLM.setGapStrategy (StaggeredGridLay outManager.GAP_HANDLING_NONE); ? – MojoTosh
Duplicato di http://stackoverflow.com/questions/27636999/staggeredgridlayoutmanager-and-moving-items – Tiago