Android Kotlin SnapHelper - 항목 단위로 스크롤
Notepad96
·2022. 1. 16. 09:13
300x250
1. 결 과
# 해당 글은 리사이클러뷰에서 항목을 스크롤할 시 항목 단위로 전환이되고 싶을 경우 사용 가능한 방법을 기술한다.
위 결과를 보면 본래는 스크롤 시 적용 전의 결과를 갖지만 이 방법을 적용아면 아래 적용 후 결과처럼 항목 단위로 스크롤이 된다.
2. Layout
2.1 activity_main.xml (메인 레이아웃)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
2.2 list_item.xml (리스트 항목 레이아웃)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#ddd">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Test Text"
android:textSize="22sp"
android:gravity="center"
/>
<TextView
android:id="@+id/test_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="#EAD726"
android:textSize="32sp"
android:gravity="center"
/>
</LinearLayout>
# 리스트 항목으로 보여줄 레이아웃을 정의하는 코드이며 사이즈를 match_parent로 하여 한 항목이 화면의 가득차도록 작성함
3. MainActivity.kt
package com.example.recyclerviewsnap
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.PagerSnapHelper
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val listManager = LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)
val listAdapter = ListAdapter()
val snap = PagerSnapHelper()
snap.attachToRecyclerView(recycler)
recycler.apply {
layoutManager = listManager
adapter = listAdapter
}
// recycler.scrollToPosition(2)
}
}
# ListAdapter는 리사이클러뷰 어댑터를 상속받아 선언한 파일로서 글 하단의 "4. 전체 코드"를 참조하거나 혹은 아래 글을 참조하여 생성
# PagerSnapHelper 객체를 생성한 후 attachToRecyclerView의 적용하고자 하는 리사이클러뷰를 파라미터로 주면 아이템 단위로 스크롤이 가능해진다.
4. 전체 코드
300x250
'Android' 카테고리의 다른 글
Android Kotlin Calendar - 달력/시계 날짜 및 시간 지정하기 (0) | 2022.01.18 |
---|---|
Android Kotlin RecyclerView Parent View Style - 부모 뷰 오브젝트 스타일 변경 (0) | 2022.01.17 |
Android Kotlin Recyclerview - 리스트 항목 클릭 시 스타일 변경 (0) | 2022.01.13 |
Android Kotlin Bottom Navigation - 하단 네비게이션 (0) | 2022.01.12 |
Android Kotlin Pop Menu - 메뉴 생성 (0) | 2021.12.26 |