Lollipop 下面的 TimePicker 时钟模式

TimePicker Clock mode below Lollipop

我正在努力让我的 TimePicker 看起来像一个时钟。我使用 timepickermode="clock" 但我收到一条 lint 警告,表明它与 api 级别 21 及更高级别兼容。

我在 Todoist 应用程序的 kitkat 上看到了这个功能 运行。我还能如何实现它?

您不能在 Lollipop 之前的版本中使用带有时钟外观的 TimePicker,如 documentation 所述:

timePickerMode
Defines the look of the widget. Prior to the L release, the only choice was spinner. As of L, with the Material theme selected, the default layout is clock, but this attribute can be used to force spinner to be used instead.

Google 本身提供了一个替代方案。它是一个外部日期选择器项目,与 API 级别 14 及更高级别兼容。您可以在这里找到该项目:

https://android.googlesource.com/platform/frameworks/opt/datetimepicker/

克隆回购后,将其添加到现有项目中,然后您可以像这样使用 TimePicker

TimePickerDialog timePickerDialog = new TimePickerDialog();
timePickerDialog.setOnTimeSetListener(new TimePickerDialog.OnTimeSetListener() {
    @Override
    public void onTimeSet(RadialPickerLayout view, int hourOfDay, int minute) {

    }
});
timePickerDialog.show(getFragmentManager(), fragmentTag);

注意导入 com.android.datetimepicker.time.TimePickerDialog 而不是标准的 android.app.TimePickerDialog

Here 是一个很好的库,它将一些 Material 小部件带到 Pre-lolipop 设备,你也可以找到时间选择器。