Je testais mon application sur un émulateur Android L et j'ai remarqué que TimePickerDialog avait considérablement changé en ceci:
Cela ne correspond pas au thème de mon application et je voulais savoir s'il était possible d'obtenir l'ancien style TimePickerDialog sous Android L.
Vous pouvez utiliser le paramètre TimePickerDialog constructeur avec le paramètre theme
pour spécifier le thème.
TimePickerDialog(Context context,
int theme,
TimePickerDialog.OnTimeSetListener callBack,
int hourOfDay,
int minute,
boolean is24HourView)
Ajoutez Android: timePickerMode = "spinner" au fichier 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
Vous pouvez choisir entre les modes spinner ou clock. Cet attribut est uniquement disponible à partir du niveau d’API 21, avant que le mode spinner soit la seule option disponible.
Si vous voulez que AM/PM soit un sélecteur au lieu d'un bouton, je vous recommande d'utiliser le constructeur à paramètre unique avec une variable ContextThemeWrapper
:
new TimePicker(new ContextThemeWrapper(getActivity(), Android.R.style.Theme_Holo_Light_Dialog_NoActionBar));
Si vous passez le thème dans le constructeur à paramètres multiples, vous obtiendrez un bouton AM/PM plutôt moche, et les deux-points seront manquants entre les colonnes des heures et des minutes.
new TimePicker(getActivity(), null, TimePickerDialog.THEME_HOLO_LIGHT);
Comme LordRaydenMK l'a dit, utilisez le constructeur TimePickerDialog
avec le paramètre theme
et fournissez ce thème: Android.R.style.CustomDatePickerDialog
Et dans votre Styles.xml
définissez ceci:
<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>