Mungkin banyak dari Anda (seperti saya), memiliki masalah dengan membuat ViewPager
dengan titik-titik terbawah, seperti ini:
Bagaimana Anda membuat ViewPager Android seperti itu?
Yang kami butuhkan adalah: ViewPager , TabLayout , dan 2 drawable untuk titik-titik yang dipilih dan default.
Pertama, kita harus menambahkan TabLayout
tata letak layar kita, dan menghubungkannya dengan ViewPager
. Kita dapat melakukan ini dengan dua cara:
TabLayout
diViewPager
<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>
Dalam hal ini
TabLayout
akan secara otomatis terhubung denganViewPager
, tetapiTabLayout
akan di sebelahViewPager
, bukan di atasnya.
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"/>
Dalam hal ini, kita dapat meletakkan di
TabLayout
mana saja, tetapi kita harus terhubungTabLayout
dengan secaraViewPager
terprogram
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);
Setelah kami membuat tata letak kami, kami harus menyiapkan titik-titik kami. Jadi kita membuat tiga file: selected_dot.xml
, default_dot.xml
dan 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>
Sekarang kita perlu menambahkan hanya 3 baris kode ke TabLayout
dalam tata letak XML kita.
app:tabBackground="@drawable/tab_selector"
app:tabGravity="center"
app:tabIndicatorHeight="0dp"
Untuk ViewPager2
membaca artikel ini:
ViewPager (2) dengan indikator titik di medium.com
Up-vote dipersilahkan ;-)
app:tabMaxWidth
di TabLayoutapp:tabMaxWidth="30dp" app:tabTextColor="@color/transparent2" app:tabSelectedTextColor="@color/transparent2" app:tabIndicatorHeight="0dp" android:layout_gravity="bottom|center"
Pertama, buat tata letak, dengan memberi satu LinerLayout untuk Dots yang ditampilkan di atas Pager Tampilan Anda
Setelah itu buat 2 drawable
1. Drawable Tidak Dipilih
2. Drawable yang Dipilih
Setelah itu atur adapter
Buat metode setupPagerIndidcatorDots ():
sumber
HomeViewPagerAdapter
?Anda dapat memeriksa perpustakaan saya untuk menangani permintaan Anda: https://github.com/tommybuonomo/dotsindicator
Dalam tata letak XML Anda
Dalam kode Java Anda
sumber
tools:replace="android:label"
keapplication
tag di sayaAndroidManifest.xml
untuk menyingkirkan kesalahan tentang tag yang didefinisikan dua kali dan menyebabkan membangun Gradle gagal.gradle
kesalahanError:(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'
- bagaimana saya bisa memperbaikinya?selector_product_image.xml
image_selected.xml
image_unselected.xml
ImageAdapter.java
row_slider_image.xml
sumber
Xml Anda
buat drawable. klik kanan pada drawable -> new -> Drawable file resource name file itu
tab_selector.xml
Sekarang ada dua file xml lagi. buat dua file xml lagi dengan nama yang dihormati. ini adalah indikator pemilih dan indikator tidak dipilih
selected_tab.xml
unselected_tab.xml
sumber
SmartViewPager
tampilan khusus Anda.Ketika Anda menginginkan sesuatu yang mirip dengan ini dengan ViewPager2 dan Kotlin terbaru
Semuanya menjelaskan sendiri, tidak perlu dijelaskan!
1. Aktivitas atau Fragmen Anda
2. Tata Letak
3. Drawable: tab_selector.xml
4. Drawable: dot_selected.xml
5. Drawable: dot_default.xml
6. Adaptor
}
7. Layout: pager_item.xml
sumber
Tempatkan ViewFlipper dan viewFlipper_linear_dot_lay (Linearlayout) di samebaseline dan ikuti yang di bawah ini
Dan OnRight & OnLeft memastikan tempatkan kode di bawah ini
sumber
Tambahkan dependensi> Sinkronkan Gradle
Dalam kode java Anda
Dalam tata letak Anda
sumber