diff --git a/README.md b/ReadMe.md similarity index 77% rename from README.md rename to ReadMe.md index 783f3a6..f0985cb 100644 --- a/README.md +++ b/ReadMe.md @@ -6,15 +6,19 @@ either for `ViewPager` or `ViewPager2`. ## How to implement View Pager dots indicator? +Here is description how to implement dots indicator - full example you can find in repository above. + All we need are: [ViewPager][1], [TabLayout][2] and 2 drawables for selected and default dots. +> Implementation for `ViewPager2` is almost the same: +> Replace `androidx.viewpager.widget.ViewPager` with `androidx.viewpager2.widget.ViewPager2`. + Firstly, we have to add `TabLayout` to our screen layout, and connect it with `ViewPager`. We can do this in two ways: -### Nested `TabLayout` in `ViewPager` - +#### Nested `TabLayout` in `ViewPager` ```xml In this case `TabLayout` will be automatically connected with > `ViewPager`, but `TabLayout` will be next to `ViewPager`, not over it. -### Separate `TabLayout` +#### Separate `TabLayout` ```xml In this case, we can put `TabLayout` anywhere, but we have to connect > `TabLayout` with `ViewPager` programmatically -```java -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); +**for `ViewPager`** +```kotlin +val viewPager = findViewById(R.id.viewPager) +val tabLayout = findViewById(R.id.tabLayout) +viewPager.adapter = sectionsPagerAdapter +tabLayout.setupWithViewPager(viewPager) +``` +**for `ViewPager2`** +```kotlin +val viewPager2 = findViewById(R.id.viewPager2) +val tabLayout = findViewById(R.id.tabLayout) +viewPager.adapter = sectionsPagerAdapter +TabLayoutMediator(tabLayout, viewPager2) { tab, position -> + //Some implementation... + }.attach() ``` Once we created our layout, we have to prepare our dots. So we create three files: `selected_dot.xml`, `default_dot.xml` and `tab_selector.xml`. -### selected_dot.xml +#### selected_dot.xml ```xml @@ -77,7 +89,7 @@ three files: `selected_dot.xml`, `default_dot.xml` and ``` -### default_dot.xml +#### default_dot.xml ```xml @@ -94,7 +106,7 @@ three files: `selected_dot.xml`, `default_dot.xml` and ``` -### tab_selector.xml +#### tab_selector.xml ```xml @@ -107,8 +119,6 @@ three files: `selected_dot.xml`, `default_dot.xml` and ``` ---- - Now we need to add only 3 lines of code to `TabLayout` in our XML layout. @@ -118,7 +128,7 @@ app:tabGravity="center" app:tabIndicatorHeight="0dp" ``` - +--- *[ViewPager with dots indicator][3] at medium.com* diff --git a/app/src/main/java/com/adriankuta/viewpagerdots/activities/ViewPagerActivity.kt b/app/src/main/java/com/adriankuta/viewpagerdots/activities/ViewPagerActivity.kt index 2a2b09b..1ff630e 100644 --- a/app/src/main/java/com/adriankuta/viewpagerdots/activities/ViewPagerActivity.kt +++ b/app/src/main/java/com/adriankuta/viewpagerdots/activities/ViewPagerActivity.kt @@ -2,9 +2,10 @@ package com.adriankuta.viewpagerdots.activities import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewpager.widget.ViewPager import com.adriankuta.viewpagerdots.R import com.adriankuta.viewpagerdots.adapters.SectionsPagerAdapter -import kotlinx.android.synthetic.main.activity_viewpager.* +import com.google.android.material.tabs.TabLayout import kotlinx.android.synthetic.main.toolbar.* class ViewPagerActivity : AppCompatActivity() { @@ -20,6 +21,8 @@ class ViewPagerActivity : AppCompatActivity() { supportFragmentManager ) + val viewPager = findViewById(R.id.viewPager) + val tabLayout = findViewById(R.id.tabLayout) viewPager.adapter = sectionsPagerAdapter tabLayout.setupWithViewPager(viewPager) }