Centrer des éléments dans un RecyclerView lorsqu'il est implémenté avec GridLayoutManager

J'ai un RecyclerView mis en œuvre en utilisant GridLayoutManager.

Selon le nombre d'éléments dans l'ensemble de données, le spanCount se situe entre 1 à 4. Les largeurs des objets changent en fonction du spanCount. Si le spancount est supérieur ou égal à 4, le spanCount est laissé à 4.

  • Comment obtenir des vacances nationales du pays sélectionné
  • Pourquoi étendre une classe Application?
  • Ouvrez un clavier numérique sans forcer le EditText à être uniquement numérique
  • Impossible de trouver com.android.support:appcompat-v7:25.3.1
  • Comment puis-je envoyer une bibliothèque Android (aar) avec des dépendances à distance (gradle)?
  • Est-il possible de rafraîchir la vue d'un fragment
  • Si j'ai 5 éléments, il reste 1 élément sur (4 éléments en 1 rangée, 1 élément restant), positionné à gauche de l'écran, sur une ligne par lui-même. J'aimerais qu'il soit centré.

    J'ai essayé de régler la marge de la marge de l'article sur le programme, et j'enveloppe à la fois le recyclerView et les éléments individuels dans LinearLayouts et le réglage de la gravité au centre, ainsi que la gravité du recyclerView.

    Exemple d'article XML:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="horizontal" > <RelativeLayout android:layout_width="200dp" android:layout_height="200dp" android:layout_gravity="center" android:id="@+id/relative" /> </LinearLayout> 

    Exemple RecyclerView XML

      <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="horizontal" > <android.support.v7.widget.RecyclerView android:id="@+id/recycler" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> 

    Quelqu'un peut-il proposer une solution ou me donner du matériel?

    Merci d'avance.

  • PutExtra () dans Android
  • Google a-t-il cessé de supporter le plugin Android Eclipse?
  • Android AppStateManager :: Fuite de données internes dans un objet DataBuffer détecté
  • Le titulaire doit-il tenir compte de l'adaptateur?
  • "L'application a cessé de fonctionner" après avoir activé Proguard
  • Faites des trucs d'interface utilisateur dans un thread non-UI
  • One Solution collect form web for “Centrer des éléments dans un RecyclerView lorsqu'il est implémenté avec GridLayoutManager”

    La réponse à cela est que, lorsque vous définissez le spancount du GridLayoutManager, chaque élément, quelle que soit la taille, essayez et ne le développez pas, cela n'augmentera pas en taille au-delà des dimensions autorisées pour chaque élément. Cette dimension permise "boîtes" dans l'élément, et la taille de la boîte est spécifiée par la hauteur totale et la largeur de la vue de recyclage par rapport à la spancount définie sur GridLayoutManager. Cela signifie également que vous ne pouvez pas utiliser les paramètres de gravité pour pousser un élément en dehors de sa «boîte».

    La case / cellule de l'élément est généralement calculée de la manière suivante: si la largeur de la vue de recylage est de 100dp, et le spancount est de 2, chaque case / cellule d'objets aura une largeur de: largeur / spanCount. Dans ce cas, chaque case aura une largeur de 50dp (100dp / spanCountOf2).

    Pour qu'un article puisse prendre en charge les 100dp complets, puis centré dans l'espace de 100dp, l'élément doit prendre 2 spancounts, c'est-à-dire si la largeur est de 100dp et spancount est de 2, chaque élément est attribué à 50dp Largeur (1 des 2 spancount disponibles), pour que l'article prenne le 100dp complet, vous devez indiquer au gridLayoutManager que l'élément en position X occupe 2 spanCounts au lieu de 1. Une fois que l'élément occupe la largeur totale, ou La quantité de portée que vous souhaitez prendre, elle peut être centrée ou redimensionnée dans sa boîte nouvellement définie (la taille de la boîte étant la largeur / hauteur du recycleur par rapport à son spancount).

    Pour modifier le nombre de périodes d'un élément donné, appelez: setSpanSizeLookup () sur GridLayoutManager. Ensuite, identifiez la position de l'élément que vous souhaitez modifier la taille de l'article et dans l'état de retour de la méthode setSpanSizeLookup (), indiquez le nombre de périodes que vous souhaitez utiliser:

      gridlayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { @Override public int getSpanSize(int position) { if (position == 1) { return 4; // the item in position now takes up 4 spans } return 1; } }); } 

    En modifiant le nombre d'articles, vous pouvez utiliser les paramètres de gravité pour centrer un élément au milieu d'une rangée, si cet élément reprend le nombre total de spancount pour chaque ligne.

    Pourtant, vous pouvez trouver que vous devez également utiliser d'autres mises en page dans l'adaptateur pour vos articles pour centrer les éléments. Donc, potentiellement, vous devrez peut-être mélanger et combiner entre différents paramètres d'étendue et utiliser différentes mises en page via la méthode getItemViewType () dans le RecycleurAdapter.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.