【问题标题】:How to disable past time in TimePickerDilog kotlin如何在 TimePickerDilog kotlin 中禁用过去的时间
【发布时间】:2021-08-30 10:52:29
【问题描述】:

我已将这种依赖关系 implementation 'com.wdullaer:materialdatetimepicker:4.2.3' 用于 timepickerdialog。 如何在日期选择器中选择当前日期时禁用过去时间,但是当 usr 选择未来日期时,用户可以选择任何时间。 我已经完成了这段代码,但我不明白如何应用时间检查,所以当用户选择当前日期时用户无法选择过去时间,用户可以在用户选择未来日期时选择任何时间 .

   val cal = Calendar.getInstance()
        val tpd = TimePickerDialog.newInstance(
            { view, hourOfDay, minute, second ->
                if (cal.getTimeInMillis() >= cal.getTimeInMillis()) {
                    //it's after current
                    val hour = hourOfDay % 12
                    binding.editChooseTime.setText(
                        java.lang.String.format(
                            "%02d:%02d %s", if (hour == 0) 12 else hour,
                            minute, if (hourOfDay < 12) "AM" else "PM"
                        )
                    )
                    getTime= hourOfDay.toString() +":"+minute+":"+second
                } else {
                    Toast.makeText(applicationContext, "Invalid Time", Toast.LENGTH_LONG).show()
                }
            },
            cal.get(Calendar.HOUR_OF_DAY),
            cal.get(Calendar.MINUTE),
            true
        )
        tpd.setMinTime(cal.get(Calendar.HOUR_OF_DAY),cal.get(Calendar.MINUTE),
            cal.get(Calendar.SECOND)) // MIN: hours, minute, secconds
        tpd.show(supportFragmentManager, "TimePickerDialog")
    }

【问题讨论】:

    标签: android datetime kotlin


    【解决方案1】:

    在 Kotlin 中使用 CalenderView,然后使用它的内置函数

    addDecorator()
    

    像..(JAVA)一样实现它

     binding.calendarView.addDecorator(new DayViewDecorator() {
    
            @Override
            public boolean shouldDecorate(CalendarDay day) {
                return day.isBefore(CalendarDay.today()); // Disable Days Before Today.
            }
    
            @Override
            public void decorate(DayViewFacade view) {
                view.setDaysDisabled(true);
            }
        });
    

    完成。☻♥玩得开心..

    【讨论】:

    • 请检查上述逻辑或告诉我如何禁用今天的过去时间,用户可以在 TimePickerDilog 中选择未来的任何时间。
    • 我使用了如下的材质日历视图。 schemas.android.com/apk/res-auto" android:id="@+id/calendarView" android:layout_width="match_parent" android:layout_height="wrap_content" app:mcv_showOtherDates="all" app :mcv_selectionColor="#00F" /> 然后我得到了它的内置功能。我上面提到的。
    猜你喜欢
    • 2018-08-17
    • 2021-09-28
    • 1970-01-01
    • 1970-01-01
    • 2020-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多