После того, как вы пробрались через тему AOSP и файлы стиля xml и много поисковых запросов, я сделал некоторый прогресс. Теперь я могу создавать большинство (!) Вещей.
Так что это частичный ответ, не все так, как есть. Но вот насколько я получил:
Вы можете видеть, что я теперь в состоянии теме заголовок, оон выбранное время часть (минуты в данном случае), круг, цифры (!) в этом круге и «руке» (или селекторе). О, и кнопки тоже стилизованы.
Позвольте мне объяснить, как я начал работать, во-первых: важно то, что вы не можете переопределять вещи непосредственно из темы вашего приложения ИЛИ из темы/стиля диалога (предупреждения). Вы должны идти от одного к другому, так сказать.
Пример:
AndroidManifest.xml: Установка пользовательских тема для приложения и/или активности
<activity>
android:theme="@style/Theme.MyTheme"
</activity>
значения-v21/styles.xml: (где пользовательская тема находится): установить timePickerDialogTheme
<style name="Theme.MyTheme" parent="@style/Theme.AppCompat.Light">
<item name="android:timePickerDialogTheme">@style/TimePickerDialogTheme</item>
</style>
Тогда ниже, определяют timePickerDialo gTheme и установить 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>
Потому что, если вы хотите, чтобы стиль текста (ну, время, на самом деле) в заголовке вам необходимо определить headerTimeTextAppearance:
<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 in AOSP styles.xml (ctrl-f 'timepicker', пока не найдете его), вы увидите множество других свойств, которые вы сможете изменить:
headerTimeTextAppearance headerAmPmTextAppearance headerSelectedTextColor headerBackground numbersTextColor numbersBackgroundColor amPmTextColor amPmBackgroundColor amPmSelectedBackgroundColor numbersSelectorColor
Большинство из этих работ (до тех пор, как вы предварять 'андроид:' для каждого из них), но я не мог get 'headerSelectedTextColor' для работы. Я получил ошибку компиляции, говоря что-то вроде «не может соответствовать свойству bla bla». Кроме того, если вы посмотрите на мой пример выше, я жестко закодировал textSize для свойства 'headerTimeTextAppearance', потому что значение '@ dimen/timepicker_ampm_label_size' запустило ошибки.
Вкратце: большинство вещей указано выше и как заставить их работать. Но не все понятно. Поэтому я все еще вижу, что полная документация/руководство :)
'андроида: headerBackground' работает. Я не смог заставить 'android: numbersTextColor',' android: numbersBackgroundColor' работать. N.B .: '? ColorControlActivated' (наследует от'? ColorAccent') делает основные моменты на самом деле. –
Спасибо :) Я сделал некоторый прогресс, но мне нужно провести некоторое тестирование и очистить, прежде чем я отправлю его здесь. Оказывается, вы должны переопределить тему, затем стиль и (если хотите) headerTextAppearance. – REJH