Dans de nombreuses nouvelles applications Android et leur dernière mise à jour, ces applications (principalement la conception matérielle) ont une barre de défilement personnalisée avec des lettres et des chiffres, tandis que la barre de défilement avec le pouce, des alphabets ou des chiffres apparaît à côté du pouce. capture d'écran jointe à la question de la barre de défilement de l'application 'Contacts'.
Capture d'écran:
Alors, comment modifier une barre de défilement dans mon application qui utilise recyclerview, pour créer une barre de défilement comme cette barre de défilement avec l'alphabet et la bulle numérique ou y a-t-il une nouvelle API ou bibliothèque introduite pour cela?
Pour tous ceux qui recherchent toujours une réponse à cela. J'ai trouvé un certain nombre de bibliothèques qui offrent cette fonctionnalité:
Tout ce qui précède fournit le mécanisme FastScroll (ce que vous recherchez) - bien que certains soient plus beaux que d'autres.
J'ai trouvé le MaterialScrollBar le plus facile à installer et à utiliser, ainsi que le fait qu'il a les plus beaux cosmétiques (adhère aux directives de conception des matériaux et ressemble à l'application Contacts).
Cette bibliothèque est également activement maintenue et développée, les problèmes et les relations publiques étant fermés, etc.
J'espère que cela peut aider quelqu'un, car j'ai passé beaucoup de temps à le rechercher moi-même.
Comme je peux comprendre votre question, vous souhaitez implémenter la fonction "Fast Scroll" dans Android.
Cette fonction vous permet de faire défiler rapidement une grande liste. Vous pouvez facilement l'implémenter en utilisant this bibliothèque tierce.
C'est très simple, léger et hautement personnalisable. Ne le sous-estimez pas en regardant la capture d'écran ci-dessus. Vous pouvez facilement le faire ressembler à la capture d'écran que vous avez fournie. Je l'ai utilisé dans une de mes applications et j'ai obtenu d'excellents résultats.
Utilisation
L'utilisation de cette bibliothèque est également simple. Il vous suffit d'inclure sa disposition QuickScroll
et d'implémenter l'interface Scrollable
sur votre BaseAdapter. Donner à ce widget l'apparence matérielle est vraiment simple.
En raison de la demande des utilisateurs, pour tous ceux qui veulent savoir comment utiliser la fonction "Fast Scroll" dans RecyclerView, la voici pour vous tous. Vous pouvez utiliser la bibliothèque this .
Il peut vous donner des résultats très proches (sinon exacts) de la capture d'écran fournie. Il vous suffit d'utiliser le widget RecyclerViewFastScroller
dans votre mise en page.
Utilisation
Étape 1
Ajouter cette dépendance
compile 'xyz.danoz:recyclerviewfastscroller:0.1.3'
Étape 2
Maintenant, dans votre XML, vous devez mettre ce widget
<Android.support.v7.widget.RecyclerView
Android:id="@+id/recyclerView"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
/>
<xyz.danoz.recyclerviewfastscroller.vertical.VerticalRecyclerViewFastScroller
Android:id="@+id/fast_scroller"
Android:layout_width="@dimen/however_wide_you_want_this"
Android:layout_height="match_parent"
Android:layout_alignParentRight="true"
/>
puis dans votre code,
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.recycler_view_frag, container, false);
...
// Grab your RecyclerView and the RecyclerViewFastScroller from the layout
RecyclerView recyclerView = (RecyclerView) rootView.findViewById(R.id.recyclerView);
VerticalRecyclerViewFastScroller fastScroller = (VerticalRecyclerViewFastScroller) rootView.findViewById(R.id.fast_scroller);
// Connect the recycler to the scroller (to let the scroller scroll the list)
fastScroller.setRecyclerView(recyclerView);
// Connect the scroller to the recycler (to let the recycler scroll the scroller's handle)
recyclerView.setOnScrollListener(fastScroller.getOnScrollListener());
...
return rootView;
}
Il existe de nombreux attributs supplémentaires pour le personnaliser comme vous le souhaitez. Vous pouvez créer exactement la même apparence que la capture d'écran que vous avez fournie.
L'utilisation d'une bibliothèque peut vous faire gagner beaucoup de temps, mais si vous souhaitez créer cette fonctionnalité à partir de zéro, ici est un article très utile pour vous.
J'espère que ça aide.
List View Variants la bibliothèque semble être parfaite pour vos besoins, essayez-la.
Découvrez la démo ci-dessous.
J'utilise ce nouveau maintenant - https://github.com/L4Digital/FastScroll
Ci-dessous est mon précédent.
J'ai utilisé fastscroller de FutureMind dans Android Studio
https://github.com/FutureMind/recycler-fast-scroll
Utilisation
1) Compiler la dépendance requise en ajoutant
compilez 'com.futuremind.recyclerfastscroll: fastscroll: 0.2.4'
2) Modifier le fichier de mise en page pour ajouter FastScroller
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<Android.support.v7.widget.RecyclerView
Android:id="@+id/recyclerview"
Android:layout_width="match_parent"
Android:layout_height="match_parent"/>
<com.futuremind.recyclerviewfastscroll.FastScroller
Android:id="@+id/fastscroll"
Android:orientation="vertical"
Android:layout_width="wrap_content"
Android:layout_height="match_parent"
Android:layout_alignParentRight="true"/>
</RelativeLayout>
3) Dans Activity/Fragment, associez fastScroller à votre vue recycleur
recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
fastScroller = (FastScroller) findViewById(R.id.fastscroll);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(adapter);
//has to be called AFTER RecyclerView.setAdapter()
fastScroller.setRecyclerView(recyclerView);
4) Dans votre RecyclerView.Adapter, implémentez SectionTitleProvider pour afficher le contenu sur Bubble
public class MyAdapter ... implements SectionTitleProvider{
...
@Override
public String getSectionTitle(int position) {
//this String will be shown in a bubble for specified position
return getItem(position).substring(0, 1);
}
}