Можно ли изменить стиль Android L TimePickerDialog?

Я тестировал свое приложение на эмуляторе Android L, и я заметил, что TimePickerDialog значительно изменился на это:

Android L TimePickerDialog

Это не соответствует теме моего приложения, и я хотел бы знать, можно ли получить старый стиль TimePickerDialog при работе на Android L.

3 ответов


можно использовать TimePickerDialog конструктор theme параметр для указания темы.

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

добавить 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

вы можете выбрать между spinner или часы режима. Этот атрибут доступен только с уровня API 21, до этого spinner режим был единственным доступным вариантом.


Если вы хотите, чтобы AM / PM был сборщиком вместо кнопки, я рекомендую вам использовать конструктор одиночных параметров с ContextThemeWrapper:

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

AM-PM picker

Если вы передадите тему в конструктор нескольких параметров, вы получите довольно уродливую кнопку AM / PM, а двоеточие будет отсутствовать между столбцами hour и minute.

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

AM-PM button