반응형
- 캘린더를 현재 날짜 이후로만 활성화되도록
- 선택한 날짜와 요일이 뜨도록
binding.todoDatepicker.setOnClickListener {
// datepickerdialog에 표시할 달력
val datepickercalendar = Calendar.getInstance()
val year = datepickercalendar.get(Calendar.YEAR)
val month = datepickercalendar.get(Calendar.MONTH)
val day = datepickercalendar.get(Calendar.DAY_OF_MONTH)
val dpd = DatePickerDialog(
requireContext(),
R.style.MySpinnerDatePickerStyle,
{ _, year, monthOfYear, dayOfMonth ->
// 월이 0부터 시작하여 1을 더해주어야함
val month = monthOfYear + 1
// 선택한 날짜의 요일을 구하기 위한 calendar
val calendar = Calendar.getInstance()
// 선택한 날짜 세팅
calendar.set(year, monthOfYear, dayOfMonth)
val date = calendar.time
val simpledateformat = SimpleDateFormat("EEEE", Locale.getDefault())
val dayName: String = simpledateformat.format(date)
binding.todoDatepicker.text = "$year.$month.$dayOfMonth ($dayName)"
},
year,
month,
day
)
// 최소 날짜를 현재 시각 이후로
dpd.datePicker.minDate = System.currentTimeMillis() - 1000;
dpd.show()
}
res/styles.xml - datepickerdialog 색 변경
<style name="MySpinnerDatePickerStyle" parent="Theme.AppCompat.Light.Dialog">
<!-- 상단 색 변경 -->
<item name="colorAccent">@color/colorPrimary</item>
<!-- dialog의 배경 변경 -->
<item name="background">@drawable/dialog_white_roundcorner</item>
<!-- 선택한 날짜를 표시할 색상 -->
<item name="colorControlActivated">@color/colorPrimary</item>
<item name="colorControlHighlight">@color/colorPrimary</item>
<!-- 취소/확인버튼 색상 -->
<item name="android:textColor">@color/colorPrimary</item>
</style>
reference
https://www.tutorialsbuzz.com/2019/09/android-datepicker-dialog-kotlin.html
https://stackoverflow.com/questions/13661788/how-to-set-minimum-datepicker-date-to-current-date
반응형
'Android' 카테고리의 다른 글
[Android] ConstraintLayout (0) | 2021.06.19 |
---|---|
[Android] Rxjava / Reactive Programming 개념 (0) | 2021.03.25 |
[Android/kotlin] spinner 커스텀해서 사용하기 (0) | 2021.03.07 |
[Android/kotlin] DialogFragment를 이용한 커스텀 대화상자 만들기 (0) | 2021.03.05 |
[Android/kotlin] okhttp & retrofit으로 json 파싱하기 (4) | 2021.01.29 |