728x90
외부 라이브러리 없이 ViewPager의 인디케이터 추가하기
1.TabLayout을 ViewPager가 있는 xml에 추가한다.
<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"/>
2. ViewPager와 Tablayout을 연결한다.
val viewPager = findViewById<ViewPager>(R.id.viewPager)
val tabLayout = findViewById<TabLayout>(R.id.tabLayout)
viewPager.adapter = adapter
tabLayout.setupWithViewPager(viewPager)
(ViewPager2의 경우 TabLayoutMediator를 이용한다.)
val viewPager2 = findViewById<ViewPager2>(R.id.viewPager2)
val tabLayout = findViewById<TabLayout>(R.id.tabLayout)
viewPager2.adapter = adapter
TabLayoutMediator(tabLayout, viewPager2) { tab, position ->
//Some implementation
}.attach()
3. drawable폴더 안에 선택된 점, 선택되지 않은 점, tab selector을 정의한다.
selected_dot.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>
default_dot.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="@android:color/darker_gray"/>
</shape>
</item>
</layer-list>
tab_selector.xml
<?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>
3. TabLayout에 아래의 속성을 추가한다.
<com.google.android.material.tabs.TabLayout
android:layout_width="wrap_content"
android:layout_height="8dp"
android:layout_marginTop="16dp"
app:tabBackground="@drawable/pager_indicator_tab_selector"
app:tabGravity="center"
app:tabIndicatorHeight="0dp" />
끝! 👏👏👏
'개발 > AOS' 카테고리의 다른 글
안드로이드 AWS Amplify + S3에 파일 업로드 Android uploads files with AWS Amplify + S3 (3/3) S3+앱 연동 (0) | 2021.02.03 |
---|---|
안드로이드 AWS Amplify + S3에 파일 업로드 Android uploads files with AWS Amplify + S3 (2/3) S3버킷 생성 (0) | 2021.02.03 |
안드로이드 AWS Amplify + S3에 파일 업로드 Android uploads files with AWS Amplify + S3 (1/3) 환경 세팅 (0) | 2021.02.03 |
Android S3연동 하기(0) - S3란? (0) | 2021.02.02 |
Toast 메세지가 뜨지 않을 때. (0) | 2021.02.02 |