19

我在 Android L 模拟器上测试我的应用程序,我注意到 TimePickerDialog 已显着更改为:

Android L TimePickerDialog

这不符合我的应用程序的主题,我想知道在 Android L 上运行时是否可以获得旧的 TimePickerDialog 样式。

4

5 回答 5

43

android:timePickerMode="spinner"添加到 XML

    <TimePicker
        android:id="@+id/timePicker1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:timePickerMode="spinner">
    </TimePicker>

https://developer.android.com/reference/android/R.attr.html#timePickerMode

您可以在微调器时钟模式之间进行选择。此属性仅在 API 级别 21 中可用,在此之前,微调器模式是唯一可用的选项。

于 2015-06-21T07:48:52.087 回答
16

您可以使用带参数的TimePickerDialog构造theme函数来指定主题。

TimePickerDialog(Context context, 
                 int theme, 
                 TimePickerDialog.OnTimeSetListener callBack, 
                 int hourOfDay, 
                 int minute, 
                 boolean is24HourView)
于 2014-06-27T10:57:47.250 回答
16

如果您希望 AM / PM 成为选择器而不是按钮,那么我建议您使用带有 a 的单参数构造函数ContextThemeWrapper

new TimePicker(new ContextThemeWrapper(getActivity(), android.R.style.Theme_Holo_Light_Dialog_NoActionBar));

AM-PM 选择器

如果您将主题传递给多参数构造函数,那么您最终会得到一个相当难看的 AM / PM 按钮,并且在小时和分钟列之间将缺少冒号。

new TimePicker(getActivity(), null, TimePickerDialog.THEME_HOLO_LIGHT);

AM-PM 按钮

于 2014-12-03T05:48:21.230 回答
9

正如 LordRaydenMK 所说,使用TimePickerDialog带参数的构造theme函数并提供此主题:android.R.style.CustomDatePickerDialog

在你的Styles.xml定义中:

  <style name="CustomDatePickerDialog"
         parent="Theme.AppCompat.Light.Dialog.Alert">
    <item name="android:dialogTheme">@style/MyDialogTheme</item>
    <item name="android:timePickerStyle">@style/MyDatePicker</item>
  </style>

  <style name="MyDialogTheme"
         parent="Theme.AppCompat.Light.Dialog">
    <item name="android:timePickerStyle">@style/MyDatePicker</item>
  </style>

  <style name="MyDatePicker"
         parent="@android:style/Widget.Material.Light.TimePicker">
    <item name="android:timePickerMode">spinner</item>
  </style>
于 2019-01-16T11:38:26.437 回答
0

您可以在 XML 中使用android:timePickerMode属性。

欲了解更多信息:阅读这里

于 2021-08-05T10:12:56.157 回答