Skip to content

时间选择器 (Time Pickers)

源:Time pickers

时间选择器帮助用户选择并设置特定的时间。M3 提供了两种主要变体。

时间选择器示例

  1. Time picker dial (表盘模式): 通过转动手柄来选择。
  2. Time picker input (输入模式): 通过键盘输入数字。

代码实现

推荐使用 MaterialTimePicker.Builder 来创建对话框。

kotlin
val picker = MaterialTimePicker.Builder()
    .setTimeFormat(TimeFormat.CLOCK_24H)
    .setHour(12)
    .setMinute(30)
    .setTitleText("选择签到时间")
    .build()

picker.show(supportFragmentManager, "TIME_PICKER")
kotlin
picker.addOnPositiveButtonClickListener {
    // 获取小时和分钟
    val hour = picker.hour
    val minute = picker.minute
    Log.d("Time", "Selected: $hour:$minute")
}

模式切换

默认情况下,表盘模式包含一个键盘图标,允许用户随时切换到输入模式。

  • 强制时钟模式: .setInputMode(MaterialTimePicker.INPUT_MODE_CLOCK)
  • 强制键盘模式: .setInputMode(MaterialTimePicker.INPUT_MODE_KEYBOARD)

主题化

你可以通过修改 materialTimePickerTheme 来自定义表盘颜色。

xml
<style name="Theme.App" parent="Theme.Material3.*">
    <item name="materialTimePickerTheme">@style/ThemeOverlay.App.TimePicker</item>
</style>

<style name="ThemeOverlay.App.TimePicker" parent="ThemeOverlay.Material3.MaterialTimePicker">
    <!-- 自定义时钟背景颜色 -->
    <item name="clockFaceBackgroundColor">@color/my_clock_bg</item>
    <item name="colorPrimary">@color/my_hand_color</item>
</style>