Android

[Android/kotlin] datepickerdialog 커스텀 / 선택한 날짜의 년,월,일,요일 표시

dev_zoe 2021. 3. 8. 02:48
반응형

 

- 캘린더를 현재 날짜 이후로만 활성화되도록 

 

- 선택한 날짜와 요일이 뜨도록

 

        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

 

반응형