Updated ReadMe.md

This commit is contained in:
Adrian Kuta 2020-03-11 18:27:38 +01:00
parent ff7069e72f
commit 4f72ab42a1
2 changed files with 30 additions and 17 deletions

View File

@ -6,15 +6,19 @@ either for `ViewPager` or `ViewPager2`.
## How to implement View Pager dots indicator? ## 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 All we need are: [ViewPager][1], [TabLayout][2] and 2 drawables for
selected and default dots. 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 Firstly, we have to add `TabLayout` to our screen layout, and connect it
with `ViewPager`. We can do this in two ways: with `ViewPager`. We can do this in two ways:
### Nested `TabLayout` in `ViewPager` #### Nested `TabLayout` in `ViewPager`
```xml ```xml
<androidx.viewpager.widget.ViewPager <androidx.viewpager.widget.ViewPager
android:id="@+id/photos_viewpager" android:id="@+id/photos_viewpager"
@ -30,7 +34,7 @@ with `ViewPager`. We can do this in two ways:
> In this case `TabLayout` will be automatically connected with > In this case `TabLayout` will be automatically connected with
> `ViewPager`, but `TabLayout` will be next to `ViewPager`, not over it. > `ViewPager`, but `TabLayout` will be next to `ViewPager`, not over it.
### Separate `TabLayout` #### Separate `TabLayout`
```xml ```xml
<androidx.viewpager.widget.ViewPager <androidx.viewpager.widget.ViewPager
@ -47,20 +51,28 @@ with `ViewPager`. We can do this in two ways:
> In this case, we can put `TabLayout` anywhere, but we have to connect > In this case, we can put `TabLayout` anywhere, but we have to connect
> `TabLayout` with `ViewPager` programmatically > `TabLayout` with `ViewPager` programmatically
```java **for `ViewPager`**
ViewPager pager = (ViewPager) view.findViewById(R.id.photos_viewpager); ```kotlin
PagerAdapter adapter = new PhotosAdapter(getChildFragmentManager(), photosUrl); val viewPager = findViewById<ViewPager>(R.id.viewPager)
pager.setAdapter(adapter); val tabLayout = findViewById<TabLayout>(R.id.tabLayout)
viewPager.adapter = sectionsPagerAdapter
TabLayout tabLayout = (TabLayout) view.findViewById(R.id.tab_layout); tabLayout.setupWithViewPager(viewPager)
tabLayout.setupWithViewPager(pager, true); ```
**for `ViewPager2`**
```kotlin
val viewPager2 = findViewById<ViewPager2>(R.id.viewPager2)
val tabLayout = findViewById<TabLayout>(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 Once we created our layout, we have to prepare our dots. So we create
three files: `selected_dot.xml`, `default_dot.xml` and three files: `selected_dot.xml`, `default_dot.xml` and
`tab_selector.xml`. `tab_selector.xml`.
### selected_dot.xml #### selected_dot.xml
```xml ```xml
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
@ -77,7 +89,7 @@ three files: `selected_dot.xml`, `default_dot.xml` and
</layer-list> </layer-list>
``` ```
### default_dot.xml #### default_dot.xml
```xml ```xml
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
@ -94,7 +106,7 @@ three files: `selected_dot.xml`, `default_dot.xml` and
</layer-list> </layer-list>
``` ```
### tab_selector.xml #### tab_selector.xml
```xml ```xml
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
@ -107,8 +119,6 @@ three files: `selected_dot.xml`, `default_dot.xml` and
</selector> </selector>
``` ```
---
Now we need to add only 3 lines of code to `TabLayout` in our XML Now we need to add only 3 lines of code to `TabLayout` in our XML
layout. layout.
@ -118,7 +128,7 @@ app:tabGravity="center"
app:tabIndicatorHeight="0dp" app:tabIndicatorHeight="0dp"
``` ```
---
*[ViewPager with dots indicator][3] at medium.com* *[ViewPager with dots indicator][3] at medium.com*

View File

@ -2,9 +2,10 @@ package com.adriankuta.viewpagerdots.activities
import android.os.Bundle import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.viewpager.widget.ViewPager
import com.adriankuta.viewpagerdots.R import com.adriankuta.viewpagerdots.R
import com.adriankuta.viewpagerdots.adapters.SectionsPagerAdapter 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.* import kotlinx.android.synthetic.main.toolbar.*
class ViewPagerActivity : AppCompatActivity() { class ViewPagerActivity : AppCompatActivity() {
@ -20,6 +21,8 @@ class ViewPagerActivity : AppCompatActivity() {
supportFragmentManager supportFragmentManager
) )
val viewPager = findViewById<ViewPager>(R.id.viewPager)
val tabLayout = findViewById<TabLayout>(R.id.tabLayout)
viewPager.adapter = sectionsPagerAdapter viewPager.adapter = sectionsPagerAdapter
tabLayout.setupWithViewPager(viewPager) tabLayout.setupWithViewPager(viewPager)
} }