web-dev-qa-db-fra.com

Est-il possible de changer le style d'un TimePickerDialog Android L?

Je testais mon application sur un émulateur Android L et j'ai remarqué que TimePickerDialog avait considérablement changé en ceci:

Android L TimePickerDialog

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.

14
JDJ

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)
10
LordRaydenMK

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.

29
yehyatt

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));

AM-PM picker

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);

AM-PM button

12
Dan J

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>
0
David Riha