我在Android L模拟器上测试我的应用程序,我注意到TimePickerDialog已经显着改变了:
这与我的应用主题不相符,我想知道在Android L上运行时是否可以获得旧的TimePickerDialog样式。
答案 0 :(得分:29)
将 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中可用,在此之前微调器模式是唯一可用的选项。
答案 1 :(得分:12)
如果您希望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);
答案 2 :(得分:10)
您可以使用TimePickerDialog构造函数和theme
参数来指定主题。
TimePickerDialog(Context context,
int theme,
TimePickerDialog.OnTimeSetListener callBack,
int hourOfDay,
int minute,
boolean is24HourView)
答案 3 :(得分:0)
正如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>
答案 4 :(得分:0)
您可以在 XML 中使用 android:timePickerMode 属性。
更多信息:Read Here