개발 공부/안드로이드

android NumberPicker custom number/string 원하는 값으로 변경, wrapSelectorWheel

yong_DD 2022. 7. 3. 15:29

원하는 일자만 나오고, 자연스럽게 넘어가는 선택지를 만들고 싶어서 찾아보던 중 number picker에 원하는 string 이나 값을 넣을 수 있다는 사실을 발견!

바로 테스트 해보기로 했다.

 

val numberPicker : NumberPicker by lazy{
        findViewById(R.id.numberPicekr)
    }   

val values = listOf("10일","20일","30일")
numberPicker.minValue = 0
numberPicker.maxValue = values.size-1
numberPicker.wrapSelectorWheel = false
numberPicker.displayedValues = values.toTypedArray()

매우 만족스럽게 잘 나왔다 ㅎㅎ

 

Q1. 값은 어떻게 가지고 있을까?

선택한 값의 리턴을 보기 위해 listener를 달아보았다.

 numberPicker.setOnValueChangedListener { numberPicker, i, i2 ->
     Toast.makeText(this,"$i2",Toast.LENGTH_SHORT).show()
 }

 

 
 

보여주는 값만 바뀐거고 minValue, maxValue 설정한 그대로 int값이 리턴이 된다..!

value를 숫자로 넣었으니 당연한 이야기다 ㅎㅎ

 

 

Q2. wrapSelectroWheel이 무슨 값일까?

설정하는 값 중 wrapSelectorWheel이 뭔지 궁금해졌다.

이 값을 true로 해도 false로 해도 결과값이 똑같이 나왔다.

https://developer.android.com/reference/android/widget/NumberPicker#setWrapSelectorWheel(boolean)

최소값 다음에 최대값 / 최대값 다음에 최소값 이렇게 표시가 될 지 아니면 더 이상 스크롤이 안되도록 할지의 여부였다.

값을 좀 더 넣어봤더니 하단 처럼 잘 나오기 시작했다.

값을 4개 이상 넣어야 잘 동작하는 것 같다 😃

true로 설정                                                                                                    false로 설정