如何在 Android Kotlin 中将日期选择器从微调器更改为日历对话框

How to change the date picker from spinner to calendar dialogue in Android Kotlin

如何使用键盘输入选项将我的微调器日期选择器更改为普通日历,如附图所示

这是代码。

 private val datePickerDialog by lazy {
            DatePickerDialog(requireActivity(), R.style.SpinnerDatePickerDialog).apply {
                setTitle(R.string.select_date)
                datePicker.maxDate = LocalDate.now().minusDays(1).toMillis()
                setOnDateSetListener { _, year, month, dayOfMonth ->
                    viewModel.onDateSelected(year, month, dayOfMonth)
                }
            }
        }

按照以下代码实现material日历视图。

(1) 在您的应用中添加以下依赖项 Gradle.

实施'com.google.android.material:material:1.5.0'

(2) 为您的 activity.

使用以下样式
    <!-- Base application theme. -->
<style name="ScreenTheme" parent="Theme.MaterialComponents.Light.NoActionBar.Bridge">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimary</item>
    <item name="colorAccent">@color/colorAccent</item>

    <item name="materialCalendarStyle">@style/Widget.MaterialComponents.MaterialCalendar</item>
    <item name="materialCalendarFullscreenTheme">@style/ThemeOverlay.MaterialComponents.MaterialCalendar.Fullscreen</item>
    <item name="materialCalendarTheme">@style/ThemeOverlay.MaterialComponents.MaterialCalendar</item>
</style>

(3) 在 Manifest.xml 文件中设置上述样式 activity.

<activity
        android:name=".DashboardActivity"
        android:screenOrientation="portrait"
        android:theme="@style/ScreenTheme"
        android:windowSoftInputMode="stateAlwaysHidden" />

(4) 单击按钮添加以下代码。

val datePicker =
                        MaterialDatePicker.Builder.datePicker()
                                .setTitleText("Select date")
                                .setSelection(MaterialDatePicker.todayInUtcMilliseconds())
                                .build()

                datePicker.show(childFragmentManager,"")
  • 如果你想要一个带片段的日历,请使用 childFragmentManager,否则请使用 supportFragmentManager 和 activity。

输出: