Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Dialog
- RealtimeDB
- 밑줄
- OutlinedButton
- 안드로이드
- nav_graph
- 안드로이드 스튜디오
- firebase
- Android
- button
- 랜덤ID
- ROOM
- 뷰바인딩
- textview
- 안드로이드스튜디오
- Imageview
- BottomSheetDialog
- FRAGMENT
- EditText
- ButtonWithButton
- ArrayList
- lifecyclescope
- 코틀린
- Activity
- androidstudio
- 팝업액티비티
- ViewModel
- firebasefunctions
- MaterialButton
- Kotlin
Archives
- Today
- Total
안드로이드 앱 개발
NumberPicker를 활용한 Custom TimePicker - Kotlin 본문
binding.rsvTimeLayout.setOnClickListener {
val dialog = AlertDialog.Builder(this).create()
val edialog: LayoutInflater = LayoutInflater.from(this)
val mView: View = edialog.inflate(R.layout.dialog_custom_timepicker, null)
val hour: NumberPicker = mView.findViewById(R.id.hour_picker)
val minute: NumberPicker = mView.findViewById(R.id.min_picker)
val cancel: TextView = mView.findViewById(R.id.cancel_btn)
val ok: TextView = mView.findViewById(R.id.ok_btn)
// 순환 안되게 막기
hour.wrapSelectorWheel = false
minute.wrapSelectorWheel = false
// editText 설정 해제
hour.descendantFocusability = NumberPicker.FOCUS_BLOCK_DESCENDANTS
minute.descendantFocusability = NumberPicker.FOCUS_BLOCK_DESCENDANTS
// 최소값 설정
hour.minValue = 6
minute.minValue = 0
// 최대값 설정
hour.maxValue = 23
minute.maxValue = 5
//보여지는 값 세팅 ; output은 다름
hour.displayedValues = arrayOf("06시",
"07시",
"08시",
"09시",
"10시",
"11시",
"12시",
"13시",
"14시",
"15시",
"16시",
"17시",
"18시",
"19시",
"20시",
"21시",
"22시",
"23시")
minute.displayedValues = arrayOf("00분", "10분", "20분", "30분", "40분", "50분")
minute.setOnValueChangedListener { picker, oldVal, newVal ->
}
//초기값 세팅
hour.value = 9
minute.value = 0
// 취소 버튼 클릭 시
cancel.setOnClickListener {
dialog.dismiss()
dialog.cancel()
}
// 완료 버튼 클릭 시
ok.setOnClickListener {
var dspMin: String = ""
when (minute.value) {
0 -> dspMin = "00분"
1 -> dspMin = "10분"
2 -> dspMin = "20분"
3 -> dspMin = "30분"
4 -> dspMin = "40분"
5 -> dspMin = "50분"
}
binding.timeContentTv.text =
(hour.value).toString() + "시 " + dspMin
dialog.dismiss()
dialog.cancel()
}
dialog.setView(mView)
dialog.create()
dialog.show()
//크기조정
val dm = applicationContext.resources.displayMetrics
val width = (dm.widthPixels * 0.7).toInt() // Display 사이즈의 90%
val params: ViewGroup.LayoutParams = dialog.getWindow()!!.getAttributes()
params.width = width
dialog.getWindow()!!.setAttributes(params as WindowManager.LayoutParams)
}