Android timepicker 분(minute)부분 움직였을 때 시(hour)부분 고정하기

울늘·2022년 7월 4일
0

블로그 전 게시물에서 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을-사용하는-과정에서-최신기기에서는-사용되지-않는-코드-수정

profile
주니어 안드로이드 개발자입니다!

0개의 댓글