[Android] ScrollView

Jbro·2023년 8월 7일
0

Android 기초

목록 보기
10/23
post-thumbnail
post-custom-banner

Android의 ScrollView는 스크롤이 가능한 컨테이너 View로 내부에 표시되는 내용이 View보다 클 때 스크롤하여 추가로 볼 수 있도록 해준다.

ScrollView에는 다음과 같은 속성이 있다.

  • android:layout_width: ScrollView의 가로 크기를 지정한다. match_parent로 설정하면 부모 뷰의 가로 길이에 맞춰진다.
  • android:layout_height: ScrollView의 세로 크기를 지정한다. match_parent로 설정하면 부모 뷰의 세로 길이에 맞춰진다.

스크롤뷰가 포함된 MainActivity 코드

class MainActivity : AppCompatActivity() {

    lateinit var activityMainBinding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        activityMainBinding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(activityMainBinding.root)

        activityMainBinding.run{
            scroll1.run{
                // ScrollView의 Scroll 이벤트
                // 이벤트가 발생한 뷰, 스크롤된 X 좌표, 스크롤된 Y 좌표, 스크롤 되기전 X 좌표, 스크롤 되기전 Y 좌표
                setOnScrollChangeListener { v, scrollX, scrollY, oldScrollX, oldScrollY ->
                    textView2.text = "Y : $oldScrollY -> $scrollY"
                }
            }

            scroll2.run{
                setOnScrollChangeListener { v, scrollX, scrollY, oldScrollX, oldScrollY ->
                    textView.text = "X : $oldScrollX -> $scrollX"
                }
            }

            button.setOnClickListener {
                // ScrollView의 Y 좌표를 가져온다.
                textView.text = "X : ${scroll2.scrollX}"
                textView2.text = "Y : ${scroll1.scrollY}"
            }

            button2.setOnClickListener {
                // 지정된 위치로 이동한다.
//                scroll1.scrollTo(0, 1000)
//                scroll2.scrollTo(1000, 0)
                // 현재 위치에서 지정된 만큼 이동한다.
//                scroll1.scrollBy(0, 100)
//                scroll2.scrollBy(100, 0)
                // 지정된 위치로 이동한다(애니메이션)
//                scroll1.smoothScrollTo(0, 1000)
//                scroll2.smoothScrollTo(1000, 0)
                // 지정된 만큼 이동한다.(애니메이션)
                scroll1.smoothScrollBy(0, 100)
                scroll2.smoothScrollBy(100, 0)
            }
        }
    }
}
profile
안드로이드 개발자 꿈나무
post-custom-banner

0개의 댓글