Android de Centrage de l'Élément dans RecyclerView
Je suis un newbie dans android. Je ne sais pas pourquoi je ne peux pas le centre de mon article dans RecyclerView.
Ce que je veux, c'est comme l'image ci-dessous :-
Ce qu'est android le rendu est comme l'image ci-dessous :-
Est-il un moyen de pousser les articles au RecyclerView au centre? Donc, il ressemblera à ceci :-
J'ai également fournir les fichiers de mise en page comme ci-dessous :-
recycler_item.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:id="@+id/calendar_itemContainer">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="April"
android:id="@+id/calendar_txtMonth"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:textColor="#ff58636d"
android:textSize="16sp"
android:gravity="center|center_vertical|center_horizontal"
android:paddingTop="8dp"
android:paddingLeft="12dp"
android:paddingRight="12dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="21"
android:id="@+id/calendar_txtDay"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/calendar_txtMonth"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:textColor="#ff58636d"
android:textSize="40sp"
android:layout_marginTop="-10dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingBottom="5dp"
android:gravity="center|center_vertical|center_horizontal" />
</RelativeLayout>
fragment_calendar.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/calendar_recycler_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="horizontal"
android:background="#ff2c3e50" />
</RelativeLayout>
et les codes java :-
CalendarAdapter mAdapter = new CalendarAdapter(mDataset);
mLayoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false);
mRecyclerView.setLayoutManager(mLayoutManager);
mAdapter.setCalendarCallbacks(this);
mRecyclerView.setAdapter(mAdapter);
mRecyclerView.setItemAnimator(new DefaultItemAnimator());
selectItem(mCurrentSelectedPosition);
- Essayez avec android:schéma de gravité="Center" relative de mise en page et android:gravity="center" à la tetviews..espérons que cela fonctionne.
- déjà essayé mais tout de même.
- Essayer avec toutes les mise en page et textview largeur de fill_parent Ou match_parent.
- toujours la même. premier indice de démarrer sur la gauche
- avez-vous trouvé une solution?
- toujours à trouver
- Avez vous trouver une solution pour cela ?
- nope. Ne fonctionne toujours pas 🙁
- bien présenté question avec des captures d'écran
- mate, si vous aviez atteint(centrage de l'élément), merci de m'aider car je suis bloqué ainsi
- salut. malheureusement, je ne suis pas en mesure de le réaliser.
- merci pour ur répondre
Vous devez vous connecter pour publier un commentaire.
J'ai essayé de faire ce que je pense est la même chose que vous vous dites quand je suis tombé sur ce post. Voici la solution que j'ai fini de l'utiliser.
Créer votre propre sous-classe de LinearLayoutManager et remplacer getPaddingLeft() et getPaddingRight() comme si.
parentWidth
doit être la largeur de laRecyclerView
etitemWidth
doit être la largeur de chacun de vos enfants de vues, à la fois en pixels. Évidemment, cela ne fonctionne que si vous savez que tous vos vues enfant va être de la même largeur.Ensuite, il suffit d'utiliser ce layout manager avec votre
RecyclerView
LinearSnapHelper
, ou tout SnapHelper pour cette questionensemble recyclerview à:
fixe pour moi
@majormajors réponse était proche, mais va commencer par centrer le premier élément de la liste et non pas centre les éléments (dans son ensemble) comme montré dans les images. Il doit y avoir un calcul supplémentaire pour vérifier le total de la largeur de l'objet. J'ai modifié le code posté par @majormajors.
Dans ce cas, les articles seront centré uniquement si elles ne dépassent pas les recyclerview largeur...sinon il suffit d'agir comme il le ferait normalement.
Simple comme bonjour avec la nouvelle classe ajoutées à la bibliothèque de prise en charge-
android.support.v7.widget.LinearSnapHelper
Il suffit de créer une instance et l'attacher à la recyclerView comme ci-dessous-
Cela a fonctionné pour moi:
Esprit ğelementwidthğ et elementMargin sont des valeurs fixes dans mon dimens.xml le fichier que j'utilise dans mon xml mise en page:
match_parent
. Aussi, je ne comprends pas pourquoi vous êtes aller chercher dimensions lorsque vous pouvez utiliser ceux de laview
. Pourriez-vous décrire votre processus de pensée avec cette réponse?Juste ajouté
android:orientation="vertical"
à la racine du point de vue. Nous allons essayer.Ajouter ci-dessous décorateur pour le recycleur vue;