2015-09-20 3 views
6

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

<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 делает цвет текста

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

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

+1

'андроида: headerBackground' работает. Я не смог заставить 'android: numbersTextColor',' android: numbersBackgroundColor' работать. N.B .: '? ColorControlActivated' (наследует от'? ColorAccent') делает основные моменты на самом деле. –

+0

Спасибо :) Я сделал некоторый прогресс, но мне нужно провести некоторое тестирование и очистить, прежде чем я отправлю его здесь. Оказывается, вы должны переопределить тему, затем стиль и (если хотите) headerTextAppearance. – REJH

ответ

16

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

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

enter image description here

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

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

Пример:

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' запустило ошибки.

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

+0

как вам удалось час_для цвета ?? –

+0

Я думаю, что это свойство numberSelector. Я на мобильный, поэтому не могу правильно проверить – REJH

+0

Я изменил номерSelector, но не менял цвет рук: | –

0

Стиль материала TimePicker для Android с пользовательскими цветами ниже, вы можете увидеть http://www.zoftino.com/android-timepicker-example для использования и стилей TimePicker.

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

<style name="MyTimePickerDialogStyle" parent="@style/ThemeOverlay.AppCompat.Dialog.Alert"> 
<item name="showTitle">false</item> 
<item name="colorControlActivated">#ffd600</item> 
<item name="colorAccent">#b71c1c</item> 
<item name="android:textColorPrimary">#43a047</item> 
<item name="android:textColorSecondary">#f44336</item> 
</style> 

Android TimePicker material style custom color from zoftino.com