Je veux ajouter 3 points du bas à mon ViewPager, comme ceci.
J'utilise FragmentActivity et prend en charge la bibliothèque ViewPager.
android
user-interface
android-viewpager
android-fragmentactivity
viewpagerindicator
Kfir Guy
la source
la source
Réponses:
Pas besoin de tant de code.
Vous pouvez faire tout cela sans trop coder en utilisant uniquement
viewpager
avectablayout
.Votre mise en page principale:
Connectez l'inactivité ou le fragment de vos éléments d'interface utilisateur comme suit:
Code Java:
Voilà, vous êtes prêt à partir.
Vous devrez créer le fichier de ressources xml suivant dans le dossier drawable .
tab_indicator_selected.xml
tab_indicator_default.xml
tab_selector.xml
Vous vous sentez aussi paresseux que moi? Eh bien, tout le code ci-dessus est converti en bibliothèque! Utilisation Ajoutez ce qui suit dans votre note:
implementation 'com.chabbal:slidingdotsplash:1.0.2'
Ajoutez ce qui suit à votre disposition Activité ou Fragment.Créer un tableau d'entiers par
strings.xml
exempleTerminé! Extra pour écouter les changements de page, utilisez le lien
addOnPageChangeListener(listener);
Github .la source
com.google.android.material.tabs.TabLayout
dans les nouvelles versionsring
. On dirait que l'anneau est également utilisé dans la bibliothèque glissantdotsplash au lieu de l'ovale.Ma solution artisanale:
Dans la mise en page:
Et dans l'activité
la source
Layout
juste pour mettre un point? UtilisezView
plutôt.la source
setOnPageChangedListener()
obsolète !! UtilisezaddOnPageChangedListener()
maintenant.J'ai créé une bibliothèque pour répondre au besoin d'un indicateur de page dans un ViewPager. Ma bibliothèque contient une vue appelée DotIndicator. Pour utiliser ma bibliothèque, ajoutez
compile 'com.matthew-tamlin:sliding-intro-screen:3.2.0'
à votre fichier de construction gradle.La vue peut être ajoutée à votre mise en page en ajoutant les éléments suivants:
Le code ci-dessus reproduit parfaitement la fonctionnalité des points sur l'écran d'accueil de Google Launcher, mais si vous souhaitez le personnaliser davantage, les attributs suivants peuvent être ajoutés:
app:unselectedDotDiameter
etapp:selectedDotDiameter
pour régler les diamètres des pointsapp:unselectedDotColor
etapp:selectedDotColor
pour définir les couleurs des pointsapp:spacingBetweenDots
pour changer la distance entre les pointsapp:dotTransitionDuration
pour définir l'heure pour animer le changement de petit à grand (et inversement)De plus, la vue peut être créée par programme en utilisant:
Des méthodes existent pour modifier les propriétés, similaires aux attributs. Pour mettre à jour l'indicateur pour afficher une page différente comme sélectionné, il suffit d'appeler la méthode
indicator.setSelectedItem(int, true)
de l'intérieurViewPager.OnPageChangeListener.onPageSelected(int)
.En voici un exemple en cours d'utilisation:
Si vous êtes intéressé, la bibliothèque a en fait été conçue pour créer des écrans d'introduction comme celui montré dans le gif ci-dessus.
Source Github disponible ici: https://github.com/MatthewTamlin/SlidingIntroScreen
la source
int getNumberOfItems()
etvoid setNumberOfItems()
. Plutôt que d'attraper l'exception, vous pouvez faire quelque chose comme ceci: gist.github.com/MatthewTamlin/761c7338d271af29526edc7859480aef .ViewPagerIndicator
n'a pas été mis à jour depuis 2012 et a reçu plusieurs bogues qui n'ont jamais été corrigés.J'ai enfin trouvé une alternative avec cette bibliothèque de lumière qui affiche de jolis points pour le
viewpager
, voici le lien:https://github.com/ongakuer/CircleIndicator
Facile à mettre en œuvre!
la source
J'ai pensé à publier une solution plus simple pour le problème ci-dessus et les numéros des indicateurs peuvent être modifiés dynamiquement en ne changeant qu'une seule valeur de variable
dotCounts=x
ce que j'ai fait va comme ceci.1) Créez un fichier xml dans un dossier pouvant être dessiné pour l'indicateur de sélection de page nommé "item_selected".
2) Créez un autre fichier xml pour l'indicateur non sélectionné nommé "item_unselected"
3) Ajoutez maintenant cette partie du code à l'endroit où vous souhaitez afficher les indicateurs par ex ci-dessous
viewPager
dans votre fichier Layout XML.4) Ajoutez cette fonction au-dessus de votre fichier d'activité où votre mise en page est gonflée ou le fichier xml ci-dessus est lié à
5) Enfin, dans votre méthode onCreate, ajoutez le code suivant pour référencer votre mise en page et gérer les positions des pages sélectionnées
la source
Vous pouvez essayer la bibliothèque de Jake Wharton - https://github.com/JakeWharton/Android-ViewPagerIndicator
la source
Voici ma solution proposée.
A) Voici mon activity_main.xml
B) pager_item.xml
C) MainActivity.java
D) CustomPagerAdapter.java
E) selecteditem_dot.xml
F) non sélectionnéitem_dot.xml
la source
Si quelqu'un veut créer un
viewPager
avec des vignettes comme indicateurs, utiliser cette bibliothèque pourrait être une option: ThumbIndicator pour viewPager qui fonctionne également avec des liens d'images comme ressources.la source
Voici comment j'ai fait cela, un peu similaire aux solutions ci-dessus. Assurez-vous simplement d'appeler la méthode loadDots () une fois toutes les images téléchargées .
la source