Android TimePickerDialog руководство / docs?

Я пытаюсь создать TimePickerDialog для sdk 21+ (Lollipop). До сих пор я выяснил, как изменить цветовую схему по умолчанию в XML:

<style name="TimePickerTheme" parent="@style/Theme.AppCompat.Light.Dialog"> <item name="colorPrimary">#ff2d6073</item> <!-- no effect --> <item name="colorPrimaryDark">#ff2d6073</item> <!-- no effect --> <item name="colorAccent">#ff2d6073</item> <item name="android:textColor">#ffD0D102</item> <item name="android:textColorPrimary">#ffD0D102</item> </style> 

Это работает, но я ищу руководство или документацию для всех свойств, которые я могу изменить.

  • AccentColor выполняет базовую цветовую схему
  • TextColorPrimary цвет текста

Но какое свойство, например, мне нужно изменить большой текст в «заголовке» диалога (где отображается текущее выбранное время)?

Есть ли какая-то документация, в которой перечислены все возможные вещи, которые вы можете изменить?

После копания в тему AOSP и стиль xml-файлов и множество поисковых запросов я добился определенного прогресса. Теперь я могу создать большинство (!) Вещей.

Так что это частичный ответ, еще не все. Но вот как далеко я получил:

Введите описание изображения здесь

Вы можете видеть, что теперь я могу задавать заголовок, un (!) Выбранную часть времени (минуты в этом случае), круг, числа в этом круге и «руку» (или селектор). О, и кнопки тоже стилизованы.

Позвольте мне объяснить, как я начал работать, во-первых: важно то, что вы не можете переопределять вещи непосредственно из темы вашего приложения ИЛИ из темы / стиля диалога (предупреждения). Вы должны идти от одного к другому, так сказать.

Пример:

AndroidManifest.xml: настройка пользовательской темы для приложения и / или действия

 <activity> android:theme="@style/Theme.MyTheme" </activity> 

Values-v21 / styles.xml: (где находится ваша настраиваемая тема): установите timePickerDialogTheme

 <style name="Theme.MyTheme" parent="@style/Theme.AppCompat.Light"> <item name="android:timePickerDialogTheme">@style/TimePickerDialogTheme</item> </style> 

Затем ниже этого определите timePickerDialogTheme и установите timePickerStyle:

 <style name="TimePickerDialogTheme" parent="@style/Theme.AppCompat.Light.Dialog"> <item name="colorAccent">#ff2d6073</item> <!-- colorAccent here seems to work just fine? --> <item name="android:timePickerStyle">@style/TimePickerDialogStyle</item> </style> 

Теперь вы можете определить большую часть стиля здесь.

 <style name="TimePickerDialogStyle" parent="@android:style/Widget.Material.Light.TimePicker"> <item name="colorAccent">#ff2d6073</item> <!-- colorAccent here seems to work just fine? --> <item name="android:timePickerMode">clock</item> <item name="android:headerBackground">#ff2d6073</item> <item name="android:headerTimeTextAppearance">@style/TextAppearance.TimePickerDialogStyle.TimeLabel</item> <!-- TimePicker Time *TextAppearance* --> <item name="android:numbersTextColor">#ff000000</item> <item name="android:numbersSelectorColor">#ff2d6073</item> <item name="android:numbersBackgroundColor">#ffdddddd</item> </style> 

Важная строка в приведенном выше примере:

 <item name="android:headerTimeTextAppearance">@style/TextAppearance.TimePickerDialogStyle.TimeLabel</item> 

Поскольку, если вы хотите стилизовать текст (ну, время, фактически) в заголовке, вам нужно определить заголовокTimeTextAppearance:

 <style name="TextAppearance.TimePickerDialogStyle.TimeLabel" parent="@android:style/TextAppearance.Material"> <item name="android:textSize">60sp</item> <!-- from --> <item name="android:textColor">#ffD0D102</item> </style> 

Теперь, если вы посмотрите на Widget.Material.TimePicker в AOSP styles.xml (ctrl-f 'timepicker', пока не найдете его), вы заметите множество других свойств, которые вы сможете изменить:

HeaderTimeTextAppearance headerAmPmTextAppearance headerSelectedTextColor headerBackground numbersTextColor numbersBackgroundColor amPmTextColor amPmBackgroundColor amPmSelectedBackgroundColor numbersSelectorColor

Большинство из них работают (до тех пор, пока вы добавляете «android:» для каждого из них), но я не мог заставить «headerSelectedTextColor» работать. Я получил ошибку компиляции, говоря что-то вроде «не может соответствовать свойству bla bla». Кроме того, если вы посмотрите на мой пример выше, я жестко закодировал textSize для свойства 'headerTimeTextAppearance', потому что значение '@ dimen / timepicker_ampm_label_size' запустило ошибки.

Вкратце: большинство вещей перечислены выше и как заставить их работать. Но не все понятно. Поэтому я все еще вижу, что полная документация / руководство 🙂