Todo lo que necesitamos son: ViewPager , TabLayout y 2 elementos extraíbles para puntos seleccionados y predeterminados.
En primer lugar, tenemos que agregar TabLayout
a nuestro diseño de pantalla y conectarlo ViewPager
. Podemos hacer esto de dos maneras:
TabLayout
enViewPager
<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>
En este caso
TabLayout
, se conectará automáticamente conViewPager
, peroTabLayout
estará al ladoViewPager
, no sobre él.
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"/>
En este caso, se puede poner
TabLayout
en cualquier lugar, pero tenemos que conectarTabLayout
con laViewPager
programación
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);
Una vez que creamos nuestro diseño, tenemos que preparar nuestros puntos. Así se crea tres archivos: selected_dot.xml
, default_dot.xml
y 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>
Ahora necesitamos agregar solo 3 líneas de código TabLayout
en nuestro diseño XML.
app:tabBackground="@drawable/tab_selector"
app:tabGravity="center"
app:tabIndicatorHeight="0dp"
Para ViewPager2
leer este artículo:
ViewPager (2) con indicador de puntos en medium.com
Los votos positivos son bienvenidos ;-)
app:tabMaxWidth
en TabLayoutapp:tabMaxWidth="30dp" app:tabTextColor="@color/transparent2" app:tabSelectedTextColor="@color/transparent2" app:tabIndicatorHeight="0dp" android:layout_gravity="bottom|center"
Primero cree un diseño, en el que le da un LinerLayout for Dots que se muestra sobre su View Pager
Después de eso crea 2 dibujables
1. No seleccionable Drawable
2. Seleccionable Drawable
Después de ese conjunto de adaptadores
Cree un método setupPagerIndidcatorDots ():
fuente
HomeViewPagerAdapter
?Puede consultar mi biblioteca para manejar su solicitud: https://github.com/tommybuonomo/dotsindicator
En su diseño XML
En su código Java
fuente
tools:replace="android:label"
a laapplication
etiqueta en miAndroidManifest.xml
para deshacerme de un error acerca de que esa etiqueta se definió dos veces y causó un error de construcción de gradle.gradle
embargo, recibo un errorError:(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'
: ¿cómo puedo solucionar esto?selector_product_image.xml
image_selected.xml
image_unselected.xml
ImageAdapter.java
row_slider_image.xml
fuente
Tu xml
crear un dibujable. haga clic derecho en dibujable -> nuevo -> recurso de archivo dibuja el nombre del archivo
tab_selector.xml
Ahora hay dos archivos xml más. cree dos archivos xml más con un nombre respetado. estos son el indicador de selección y el indicador no seleccionado
selected_tab.xml
unselected_tab.xml
fuente
SmartViewPager
sea tu vista personalizada.Cuando quieras algo similar a esto con las últimas ViewPager2 y Kotlin
¡Todo se explica por sí mismo, no hay necesidad de explicarlo!
1. Su actividad o fragmento
2. Diseño
3. Dibujable: tab_selector.xml
4. Dibujable: dot_selected.xml
5. Dibujable: dot_default.xml
6. Adaptador
}
7. Diseño: pager_item.xml
fuente
Coloque ViewFlipper y viewFlipper_linear_dot_lay (Linearlayout) en la misma línea base y siga el siguiente
Y OnRight y OnLeft getures colocan el siguiente código
fuente
Agregar dependencias> Sincronizar Gradle
En tu código java
En su diseño
fuente