J'utilise un exemple très utile ici pour afficher un RecyclerView et un GridLayoutManager pour afficher une grille avec un en-tête.
Il semble assez bon, mais mon graphiste veut que l'élément d'en-tête occupe toute la largeur du RecyclerView. À l'heure actuelle, il y a un rembourrage.
Lorsque je configure le GridLayoutManager, j'ajoute du rembourrage (que je veux toujours pour les autres éléments de la grille): [il utilise Xamarin C #]
var numColumns = myListView.MeasuredWidth / tileSizeMax;
myGridView.SetPadding(tilePadding, tilePadding, tilePadding, tilePadding);
layoutManager = new GridLayoutManager(Activity, numColumns);
myListView.SetLayoutManager(layoutManager);
Alors, comment puis-je définir un rembourrage différent pour l'élément d'en-tête ... ou le faire se dessiner sur le rembourrage?
Essayez avec ceci:
mLayoutManager = new GridLayoutManager(this, 2);
mLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
switch(mAdapter.getItemViewType(position)){
case MyAdapter.HEADER:
return 2;
case MyAdapter.ITEM:
return 1;
default:
return 1;
}
}
});
Et vérifiez ces liens:
http://blog.sqisland.com/2014/12/recyclerview-grid-with-header.htmlDéfinir l'intervalle pour les éléments dans GridLayoutManager à l'aide de SpanSizeLookup