블로그 전 게시물에서 timepicker 버전에 따른 오류를 작성한 바 있다. 그에 이어서 분을 움직여서 60이 넘어가면 시간이 1씩 증가하게 설계되어있는데 이를 막는 것을 소개하고자 한다.
Time Interval을 설정하기 위해 해당코드를 작성하였는데
@SuppressLint("PrivateApi")
fun setInterval(
timeInterval: Int = defaultInterval
) {
try {
(this.findViewById(
Resources.getSystem().getIdentifier(
"minute",
"id",
"android"
)) as NumberPicker).apply {
minValue = resources.getInteger(R.integer.minutes_min)
maxValue = resources.getInteger(R.integer.minutes_max) / timeInterval - 1
displayedValues = getDisplayedValue()
}
} catch (e: Exception) {
e.printStackTrace()
}
}
여기에 단순히 setOnValueChangedListener(null)코드만 추가해주면 분을 아무리 움직여도 시간부분이 변하지 않는다.
@SuppressLint("PrivateApi")
fun setInterval(
timeInterval: Int = defaultInterval
) {
try {
(this.findViewById(
Resources.getSystem().getIdentifier(
"minute",
"id",
"android"
)) as NumberPicker).apply {
minValue = resources.getInteger(R.integer.minutes_min)
maxValue = resources.getInteger(R.integer.minutes_max) / timeInterval - 1
displayedValues = getDisplayedValue()
setOnValueChangedListener(null)
}
} catch (e: Exception) {
e.printStackTrace()
}
}
참고 :
https://velog.io/@wjdwns/custom-timepicker에서-timeinterval을-사용하는-과정에서-최신기기에서는-사용되지-않는-코드-수정