Android TimePickerDialog样式指南/文档?

时间:2015-09-20 11:40:46

标签: android android-styles android-timepicker

我试图为sdk 21+(Lollipop)设置TimePickerDialog的样式。到目前为止,我已经找到了如何更改XML中的默认colorscheme:

<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执行文本颜色

但是,例如,我需要更改&#39;标题中的大文字。对话框(显示当前所选时间的位置)?

是否有一些文档列出了您可以更改的所有内容?

2 个答案:

答案 0 :(得分:18)

在深入研究AOSP主题和样式xml文件以及大量谷歌搜索后,我取得了一些进展。我现在能够设置大多数(!)的东西。

所以这是一个部分答案,而不是所有的方式。但在这里我走了多远:

enter image description here

你可以看到我现在能够设置标题,un(!)选择的时间部分(在这种情况下为分钟),圆圈,该圆圈中的数字以及&#39;手&# 39; (或选择器)。哦,按钮也有样式。

让我解释一下我是如何让事情发挥作用的,首先:重要的是你不能直接从你的应用主题或者(警报)对话框主题/风格中覆盖事物。你必须从一个到另一个,可以这么说。

示例:

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>

因为如果你想在标题中设置样式(好吧,时间,实际上),你需要定义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&#39; timepicker&#39;直到找到它),您会注意到一堆其他属性,您应该能够修改:

headerTimeTextAppearance headerAmPmTextAppearance headerSelectedTextColor headerBackground numbersTextColor numbersBackgroundColor amPmTextColor amPmBackgroundColor amPmSelectedBackgroundColor numbersSelectorColor

其中大部分工作(只要您为每个人提供&#39; android:&#39;)但我无法获得&#39; headerSelectedTextColor&#39;上班。我收到一个编译错误,说&#34;无法匹配属性bla bla&#34;。另外,如果你看一下我上面的例子,我将textSize硬编码为&#39; headerTimeTextAppearance&#39;属性因为&#39; @ dimen / timepicker_ampm_label_size&#39;价值引发了错误。

简而言之:上面列出了大部分内容以及如何使它们正常工作。但并非一切都很清楚。所以我仍然可以看到完整的文档/指南:)

答案 1 :(得分:1)

下面是自定义颜色的Android TimePicker素材样式,您可以看到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