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);
}
}
});
Problemi correlati
- 1. Come evitare il doppio spazio tra gli elementi quando si utilizza RecyclerView con StaggeredGridLayoutManager?
- 2. Gli elementi specificati non verranno eliminati quando si utilizza ListView.Item.RemoveAt()
- 3. Codice precedente: quando spostarsi
- 4. Come spostarsi in modo programmato tra gli elementi di tabulazione degli elementi dell'interfaccia utente WPF?
- 5. Il goniometro si interrompe in attesa di sincronizzazione con la pagina quando si utilizza la risorsa $
- 6. UnsupportedOperationException quando si utilizza iterator.remove()
- 7. RecyclerView, StaggeredGridLayoutManager Aggiorna bug
- 8. quando si utilizza knitr
- 9. Quando si utilizza CFRelease?
- 10. Quando si utilizza ANTLR
- 11. Quando si utilizza IoC appropriato?
- 12. Come rilevare quando un'applicazione si interrompe?
- 13. PostSharp: Gli attributi personalizzati vengono rimossi quando si utilizza OnMethodInvocationAspect
- 14. QuadTrees - come aggiornare quando gli elementi interni si stanno muovendo
- 15. Quando si scontrano gli hash?
- 16. Quando si impostano gli oggetti su zero quando si utilizza ARC?
- 17. DirectoryServicesCOMException quando si utilizza System.DirectoryServices.AccountManagement
- 18. Perché non si interrompe Visual Studio quando si verificano eccezioni?
- 19. IE8 si interrompe quando si utilizzano due selettori?
- 20. xCode che si interrompe quando si esegue l'applicazione
- 21. L'applicazione Qt multithread non si interrompe quando si esce
- 22. Come includere elementi di contesto nello spazio di ricerca quando si utilizza jQuery (selettore [, contesto])
- 23. Nascondi quando si utilizza Exec()
- 24. Problema quando si utilizza MFMailComposeViewController
- 25. Devo staccare gli eventi in jQuery quando rimuovo gli elementi
- 26. Citazioni quando si utilizza grep?
- 27. Attenzione quando si utilizza Reachability.h
- 28. Eccezione quando si utilizza TestRestTemplate
- 29. ArrayIndexOutOfBoundsException quando si utilizza XStream
- 30. NullPointerException quando si utilizza LocalBroadcastManager
hai provato a usare mSGLM.setGapStrategy (StaggeredGridLay outManager.GAP_HANDLING_NONE); ? – MojoTosh
Duplicato di http://stackoverflow.com/questions/27636999/staggeredgridlayoutmanager-and-moving-items – Tiago