2014-07-23 13 views
11

La documentazione sul design dei materiali Android suggerisce l'aggiunta di un pad di 8 dp nella parte superiore e inferiore di un elenco, e personalmente mi piace l'idea e voglio implementarla. Sto usando il nuovo widget RecyclerView per realizzare l'aspetto di un semplice elenco. Il problema che sto avendo è quando imposto gli attributi: paddingTop e paddingBottom del mio RecyclerView, l'ombra overscroll che appare in cima e in fondo alla lista ora ha anche un padding (e un po 'sembra male e come un errore) . Ho letto che l'impostazione di questi attributi:RecyclerView clipToPadding = false

clipToPadding = false 
scrollbarStyle = outsideOverlay 

dovrebbe fare il trucco per me, ma non è così semplice. L'effetto overscroll inizia ancora con un'imbottitura di 8 dp nella parte superiore e inferiore dello schermo e mi fa davvero impazzire. Sto facendo qualcosa di sbagliato qui, o c'è un'altra soluzione per il mio problema? Qualche consiglio apprezzato. Thx

+1

I credi _RecyclerView.ItemDecoration_ è la classe pensata per implementare questo tipo di comportamento. Soprattutto la sua documentazione _getItemOffsets_ suona qualcosa che potrebbe essere usata per aggiungere padding ad entrambe le estremità del contenuto. – harism

risposta

5

Questo è un bug noto, verrà risolto quando verrà rilasciato RecyclerView.

+0

Ok, se questo è il caso .. Puoi semplicemente inviare un link del bug segnalato (se è stato segnalato). Accetterò la tua risposta .. – Sandra

+0

non sono sicuro se è stato segnalato, ma è già stato risolto. – yigit

+0

https://code.google.com/p/android-developer-preview/issues/detail?id=261 Questo è il link al problema ma non credo sia ancora stato risolto! – Pramod

7

Aggiunta clipToPadding come falsi opere più recenti versioni

android:clipToPadding="false" 

sto usando recylerview versione

compile 'com.android.support:recyclerview-v7:22.2.1' 
+2

Posso anche confermare che funziona in questa versione .. – Sandra

+0

@Libin non funziona anche nell'ultima libreria. Ho aggiornato la versione di recyclerView che hai menzionato e aggiunto anche clipTpPadding = "false" a recyclerView e visualizza il pager in cui viene caricato. Ma ancora il problema è lì. Per favore guidami come risolverlo se lo hai già risolto. –

+0

@Sandra i puoi anche aiutarmi, sarà fantastico. –

-1

Questo metodo darà l'imbottitura per l'ultima vista la posizione

public class MyAdapter extends RecyclerView.Adapter<VH>{ 

public int getItemType(int position){ 

if(arrayList.size()-1==position){ 

return ITEM_TYPE; 
} 

return 0; 
} 

public MyHolder onBindViewHolder(MyHolder holder,int position){ 

if(getItemViewType(position)==ITEM_TYPE){ 
holder.itemView.setPadding(0,0,0,10); 
} 

}