Provavelmente muitos de vocês (como eu) têm problemas com a criação de ViewPager
pontos inferiores, como este:
Como você cria um ViewPager para Android?
Tudo o que precisamos é: ViewPager , TabLayout e 2 drawables para pontos selecionados e padrão.
Primeiro, precisamos adicionar TabLayout
ao layout da tela e conectá-lo ViewPager
. Podemos fazer isso de duas maneiras:
TabLayout
emViewPager
<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>
Nesse caso,
TabLayout
ele será conectado automaticamenteViewPager
, masTabLayout
estará próximo aViewPager
, não sobre ele.
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"/>
Neste caso, podemos colocar
TabLayout
em qualquer lugar, mas temos que ligarTabLayout
comViewPager
programaticamente
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);
Depois que criamos nosso layout, temos que preparar nossos pontos. Então nós criamos três arquivos: selected_dot.xml
, default_dot.xml
e 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>
Agora precisamos adicionar apenas 3 linhas de código TabLayout
no nosso layout XML.
app:tabBackground="@drawable/tab_selector"
app:tabGravity="center"
app:tabIndicatorHeight="0dp"
Para ViewPager2
ler este artigo:
ViewPager (2) com indicador de pontos em medium.com
Votos positivos são bem-vindos ;-)
app:tabMaxWidth
TabLayoutapp:tabMaxWidth="30dp" app:tabTextColor="@color/transparent2" app:tabSelectedTextColor="@color/transparent2" app:tabIndicatorHeight="0dp" android:layout_gravity="bottom|center"
Primeiro, crie um layout, em que forneça um LinerLayout for Dots que seja exibido no seu View Pager
Depois disso, crie 2 drawables
1. Drawable não selecionado
2. Drawable Selecionado
Depois desse adaptador definido
Crie um método setupPagerIndidcatorDots ():
fonte
HomeViewPagerAdapter
?Você pode conferir minha biblioteca para atender sua solicitação: https://github.com/tommybuonomo/dotsindicator
No seu layout XML
No seu código Java
fonte
tools:replace="android:label"
àapplication
tag no meuAndroidManifest.xml
para me livrar de um erro sobre a tag ser definida duas vezes e causar uma falha na compilação do gradle.gradle
erroError:(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'
- como posso corrigir isso?selector_product_image.xml
image_selected.xml
image_unselected.xml
ImageAdapter.java
row_slider_image.xml
fonte
Seu xml
crie um drawable. clique com o botão direito do mouse em drawable -> new -> drawable file resource name that file
tab_selector.xml
Agora há mais dois arquivos xml. crie mais dois arquivos xml com nome respeitado. estes são o indicador seletor e o indicador não selecionado
selected_tab.xml
unselected_tab.xml
fonte
SmartViewPager
é a sua visão personalizada.Quando você deseja algo parecido com o ViewPager2 e o Kotlin mais recentes
Tudo é auto-explicativo, não há necessidade de explicar!
1. Sua atividade ou fragmento
2. Layout
3. Drawable: tab_selector.xml
4. Drawable: dot_selected.xml
5. Drawable: dot_default.xml
6. Adaptador
}
7. Layout: pager_item.xml
fonte
Coloque ViewFlipper e viewFlipper_linear_dot_lay (Linearlayout) na linha de base da mesma e siga a abaixo
E OnRight e OnLeft obtêm o código abaixo
fonte
Adicionar dependências> Sincronizar o Gradle
No seu código java
No seu layout
fonte