Probablement beaucoup d'entre vous (comme moi) ont des problèmes avec la création ViewPager
avec les points du bas, comme ceci:
Comment créer un tel ViewPager Android?
Tout ce dont nous avons besoin sont: ViewPager , TabLayout et 2 drawables pour les points sélectionnés et par défaut.
Tout d'abord, nous devons ajouter TabLayout
à notre disposition d'écran et la connecter avec ViewPager
. Nous pouvons le faire de deux manières:
TabLayout
dansViewPager
<androidx.viewpager.widget.ViewPager
android:id="@+id/photos_viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.tabs.TabLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</androidx.viewpager.widget.ViewPager>
Dans ce cas
TabLayout
sera automatiquement connecté avecViewPager
, maisTabLayout
sera à côtéViewPager
, pas dessus.
TabLayout
<androidx.viewpager.widget.ViewPager
android:id="@+id/photos_viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<com.google.android.material.tabs.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
Dans ce cas, nous pouvons mettre
TabLayout
n'importe où, mais nous devons nous connecterTabLayout
avec parViewPager
programme
ViewPager pager = (ViewPager) view.findViewById(R.id.photos_viewpager);
PagerAdapter adapter = new PhotosAdapter(getChildFragmentManager(), photosUrl);
pager.setAdapter(adapter);
TabLayout tabLayout = (TabLayout) view.findViewById(R.id.tab_layout);
tabLayout.setupWithViewPager(pager, true);
Une fois que nous avons créé notre mise en page, nous devons préparer nos points. Nous créons donc trois fichiers: selected_dot.xml
, default_dot.xml
et tab_selector.xml
.
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape
android:innerRadius="0dp"
android:shape="ring"
android:thickness="8dp"
android:useLevel="false">
<solid android:color="@color/colorAccent"/>
</shape>
</item>
</layer-list>
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape
android:innerRadius="0dp"
android:shape="ring"
android:thickness="8dp"
android:useLevel="false">
<solid android:color="@android:color/darker_gray"/>
</shape>
</item>
</layer-list>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/selected_dot"
android:state_selected="true"/>
<item android:drawable="@drawable/default_dot"/>
</selector>
Maintenant, nous devons ajouter seulement 3 lignes de code TabLayout
dans notre mise en page XML.
app:tabBackground="@drawable/tab_selector"
app:tabGravity="center"
app:tabIndicatorHeight="0dp"
Pour ViewPager2
lire cet article:
ViewPager (2) avec indicateur de points sur medium.com
Les votes positifs sont les bienvenus ;-)
app:tabMaxWidth
dans TabLayoutapp:tabMaxWidth="30dp" app:tabTextColor="@color/transparent2" app:tabSelectedTextColor="@color/transparent2" app:tabIndicatorHeight="0dp" android:layout_gravity="bottom|center"
Créez d'abord une mise en page, en donnant un LinerLayout pour les points qui s'affichent sur votre page de visualisation
Après cela, créez 2 drawables
1. Dessinable non sélectionné
2. Dessinable sélectionné
Après cet adaptateur défini
Créez une méthode setupPagerIndidcatorDots ():
la source
HomeViewPagerAdapter
?Vous pouvez consulter ma bibliothèque pour gérer votre demande: https://github.com/tommybuonomo/dotsindicator
Dans votre mise en page XML
Dans votre code Java
la source
tools:replace="android:label"
à laapplication
balise dans myAndroidManifest.xml
pour me débarrasser d'une erreur au sujet de cette balise définie deux fois et provoquant un échec de construction de gradle.gradle
Cependant, j'obtiens une erreurError:(39, 20) All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes). Found versions 27.0.0, 25.3.1. Examples include 'com.android.support:support-compat:27.0.0' and 'com.android.support:animated-vector-drawable:25.3.1'
- comment puis-je résoudre ce problème?selector_product_image.xml
image_selected.xml
image_unselected.xml
ImageAdapter.java
row_slider_image.xml
la source
Votre xml
créer un dessin. clic droit sur drawable -> new -> Drawable file resource name that file
tab_selector.xml
Il y a maintenant deux autres fichiers xml. créez deux autres fichiers xml avec un nom respecté. ce sont l'indicateur de sélection et l'indicateur non sélectionné
selected_tab.xml
unselected_tab.xml
la source
SmartViewPager
Est probablement votre vue personnalisée.Lorsque vous voulez quelque chose de similaire avec les derniers ViewPager2 et Kotlin
Tout s'explique d'elle-même, pas besoin d'expliquer!
1. Votre activité ou fragment
2. Disposition
3. Dessiné: tab_selector.xml
4. Dessinable: dot_selected.xml
5. Dessiné: dot_default.xml
6. Adaptateur
}
7. Disposition: pager_item.xml
la source
Placez ViewFlipper et viewFlipper_linear_dot_lay (Linearlayout) sur la même ligne de base et suivez celle ci-dessous
Et OnRight & OnLeft obtientures placer le code ci-dessous
la source
Ajouter des dépendances> Synchroniser le Gradle
Dans votre code java
Dans votre mise en page
la source