如何在material设计android中自定义TimePicker?
How to customize TimePicker in material design android?
我无法更改选择器颜色和 TimePicker 的其他部分。
到目前为止,我可以更改 header 颜色和背景,但无法更改内圆和文本颜色。
更改自定义主题link。
我的代码:
<TimePicker
android:id="@+id/tp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:timePickerMode="clock"
android:headerBackground="#565466"
android:amPmBackgroundColor="#500126"
android:numbersBackgroundColor="#57e326"
android:numbersTextColor="#995394"
android:numbersSelectorColor="#675543"
android:textColorSecondary="#897530"
android:textColorPrimary="#359875"
/>
基本模式
您所要做的就是在 Activity 的主题中设置强调色:
<item name="colorAccent">#3333cc</item>
这将为您设置所有颜色,这样您就不会弄乱样式。
(这也意味着你不应该直接在你的 TimePicker 上设置像 amPmBackgroundColor
这样的值,让 Android 为你做这些事情。)
高级模式
如果您想单独指定所有可能的值,请执行以下操作:
首先在您的 Activity 主题中定义它:
<item name="android:timePickerStyle">@style/Theme.MyTheme.TimePicker</item>
然后创建合适的样式:
<style name="Theme.MyTheme.TimePicker" parent="android:Widget.Material.Light.TimePicker">
<item name="android:timePickerMode">clock</item>
<item name="android:headerBackground">#ff555555</item>
<item name="android:numbersTextColor">?android:attr/textColorPrimaryActivated</item>
<item name="android:numbersInnerTextColor">?android:attr/textColorSecondaryActivated</item>
<item name="android:numbersSelectorColor">?android:attr/colorControlActivated</item>
<item name="android:numbersBackgroundColor">#ff555555</item>
<item name="android:amPmTextColor">?android:attr/textColorSecondary</item>
</style>
请注意,numbersInnerTextColor
仅在 API 级别 23 和其他样式(例如 headerTextColor
)中可用(或者至少我无法设置它) ).
我建议不要使用“高级”模式,因为 TimePicker 应该与包含 Activity 的颜色相同,否则可能会对您的用户体验产生不良影响。
TimePicker material 风格:
TimePickerDialog material 带有自定义颜色的样式
<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>
TimePicker 小部件样式
<style name="MyTimePickerWidgetStyle" parent="@android:style/Widget.Material.TimePicker">
<item name="android:headerBackground">#ffe082</item>
<item name="android:numbersTextColor">#b71c1c</item>
<item name="android:numbersInnerTextColor">#f44336</item>
<item name="android:numbersSelectorColor">#33691e</item>
<item name="android:numbersBackgroundColor">#ef9a9a</item>
<item name="android:amPmTextColor">#9c27b0</item>
</style>
有关 TimePicker 的详细信息,请参阅 http://www.zoftino.com/android-timepicker-example
我无法更改选择器颜色和 TimePicker 的其他部分。 到目前为止,我可以更改 header 颜色和背景,但无法更改内圆和文本颜色。
更改自定义主题link。
我的代码:
<TimePicker
android:id="@+id/tp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:timePickerMode="clock"
android:headerBackground="#565466"
android:amPmBackgroundColor="#500126"
android:numbersBackgroundColor="#57e326"
android:numbersTextColor="#995394"
android:numbersSelectorColor="#675543"
android:textColorSecondary="#897530"
android:textColorPrimary="#359875"
/>
基本模式
您所要做的就是在 Activity 的主题中设置强调色:
<item name="colorAccent">#3333cc</item>
这将为您设置所有颜色,这样您就不会弄乱样式。
(这也意味着你不应该直接在你的 TimePicker 上设置像 amPmBackgroundColor
这样的值,让 Android 为你做这些事情。)
高级模式
如果您想单独指定所有可能的值,请执行以下操作:
首先在您的 Activity 主题中定义它:
<item name="android:timePickerStyle">@style/Theme.MyTheme.TimePicker</item>
然后创建合适的样式:
<style name="Theme.MyTheme.TimePicker" parent="android:Widget.Material.Light.TimePicker">
<item name="android:timePickerMode">clock</item>
<item name="android:headerBackground">#ff555555</item>
<item name="android:numbersTextColor">?android:attr/textColorPrimaryActivated</item>
<item name="android:numbersInnerTextColor">?android:attr/textColorSecondaryActivated</item>
<item name="android:numbersSelectorColor">?android:attr/colorControlActivated</item>
<item name="android:numbersBackgroundColor">#ff555555</item>
<item name="android:amPmTextColor">?android:attr/textColorSecondary</item>
</style>
请注意,numbersInnerTextColor
仅在 API 级别 23 和其他样式(例如 headerTextColor
)中可用(或者至少我无法设置它) ).
我建议不要使用“高级”模式,因为 TimePicker 应该与包含 Activity 的颜色相同,否则可能会对您的用户体验产生不良影响。
TimePicker material 风格:
TimePickerDialog material 带有自定义颜色的样式
<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>
TimePicker 小部件样式
<style name="MyTimePickerWidgetStyle" parent="@android:style/Widget.Material.TimePicker">
<item name="android:headerBackground">#ffe082</item>
<item name="android:numbersTextColor">#b71c1c</item>
<item name="android:numbersInnerTextColor">#f44336</item>
<item name="android:numbersSelectorColor">#33691e</item>
<item name="android:numbersBackgroundColor">#ef9a9a</item>
<item name="android:amPmTextColor">#9c27b0</item>
</style>
有关 TimePicker 的详细信息,请参阅 http://www.zoftino.com/android-timepicker-example