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. 전체 코드"를 참조하거나 혹은 아래 글을 참조하여 생성

 

 

Android Kotlin RecyclerView - 리사이클러뷰(가로, 세로)

1. 결과 2. activity_main.xml (메인 레이아웃) <?xml version="1.0" encoding="utf-8"?> # 1번 째 리사이클러 뷰는 Vertical(세로) 방향의 리사이클러 뷰 # 2번 째 리사이클러 뷰는 Horizontal(가로) 방향의 리..

notepad96.tistory.com

 

# PagerSnapHelper 객체를 생성한 후 attachToRecyclerView의 적용하고자 하는 리사이클러뷰를 파라미터로 주면 아이템 단위로 스크롤이 가능해진다.

 

 

 

 


4. 전체 코드

 

 

GitHub - Notepad96/BlogExample

Contribute to Notepad96/BlogExample development by creating an account on GitHub.

github.com

 

300x250