Modification du nombre de colonnes dans le quadrillage RecyclerView
Je suis en train de changer le nombre de colonnes qui apparaissent dans le recycleur vue (présentation de la grille) basé sur la taille de l'écran. Cependant, je ne pouvais pas trouver un bon moyen de l'atteindre. Pour le moment je suis en utilisant treeViewObserver
pour modifier le nombre de colonnes en fonction du changement de la taille de l'écran (au moment de l'orientation). Donc, si l'application s'ouvre en mode portrait, le nombre de colonnes (sur le téléphone), il décide de être un, qui à l'air bon, mais cette méthode ne fonctionne pas lorsque l'application s'ouvre directement en mode paysage où un seul s'est étendu hors de la carte dans la grille est affichée sur l'écran.
Ici recList est RecyclerView & glm est GridLayoutManager utilisé dans RecyclerView
viewWidth = recList.getMeasuredWidth();
cardViewWidthZZ = recList.getChildAt(0).getMeasuredWidth();
if (oldWidth == 0) {
oldWidth = cardViewWidthZZ;
}
if (oldWidth <= 0)
return;
int newSpanCount = (int) Math.floor(viewWidth / (oldWidth / 1.3f));
if (newSpanCount <= 0)
newSpanCount = 1;
glm.setSpanCount(newSpanCount);
glm.requestLayout();
En Ce Qui Concerne Meilleur
source d'informationauteur Umer Farooq
Vous devez vous connecter pour publier un commentaire.
Si vous fournissez une largeur de colonne fixe, vous pouvez étendre
RecyclerView
et de la plage de comptage dansonMeasure
en conséquence:Voir mon blog pour plus d'info:
http://blog.sqisland.com/2014/12/recyclerview-autofit-grid.html
Voici ma solution.
Vous pouvez l'utiliser avec XML:
Ou Java:
Vous pouvez créer un écran de ressources dépendant de fichier et le charger. Un booleans.xml dans les valeurs w820p dossier par exemple. Ou peut-être juste de créer une mise en page pour les grands écrans et être fait avec elle.