是否可以更改Android L TimePickerDialog的样式?

是否可以更改Android L TimePickerDialog的样式?,android,android-timepicker,android-5.0-lollipop,Android,Android Timepicker,Android 5.0 Lollipop,我在Android L模拟器上测试我的应用程序,我注意到TimePickerDialog已显著更改为: 这不符合我的应用程序的主题,我想知道在Android L上运行时是否有可能获得旧的TimePickerDialog样式。您可以使用带主题的构造函数来指定主题 TimePickerDialog(Context context, int theme, TimePickerDialog.OnTimeSetListener ca

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

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

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

TimePickerDialog(Context context, 
                 int theme, 
                 TimePickerDialog.OnTimeSetListener callBack, 
                 int hourOfDay, 
                 int minute, 
                 boolean is24HourView)

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

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

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

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

将android:timePickerMode=“spinner”添加到XML

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


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

正如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>

@样式/对话框主题
@样式/MyDatePicker
@样式/MyDatePicker
纺纱机

您是否尝试过使用带有主题参数的构造函数,int,android.app.TimePickerDialog.OnTimeSetListener,int,int,boolean)哇,真不敢相信我错过了!现在,我可以使用一个看起来不像是儿童小丑设计的计时器。我会添加一个答案,这样你就可以将问题标记为答案。是否有一个默认主题可以返回旧版本?@Zharf For HOLO look and feel你可以使用
TimePickerDialog.theme\u HOLO\u DARK
TimePickerDialog.theme\u HOLO\u LIGHT
作为
theme
参数不幸的是,它没有将小部件更改回您通过Kitkat在ICS中看到的样式:(@LordRaydenMK这些主题ID现在是deprecated@VadimKotov嗯,事情在5年内发生了变化。据我所知,没有timePickerMode。你只能为datePickerMode(它被称为“android:datePickerMode”)执行此操作。实际上有一个时间选择器,,关于的代码来自一个工作示例。我没有说没有时间选择器。我说我相信没有android:timePickerMode(您提供的链接确实没有提到这一点)抱歉前面的链接,但是我非常确定有一个timePickerMode,它可以从API级别21获得,这是一个正确的链接,很好地隐藏了这个功能。注意,使用这个样式,您还可以使用经典选项(带有按钮)可用,而不仅仅是时钟或微调器。它可以工作。注意,如果只是在主题内设置android:timePickerMode,它就不起作用