其他分享
首页 > 其他分享> > 如何在材质设计android中自定义TimePicker?

如何在材质设计android中自定义TimePicker?

作者:互联网

我无法更改选择器颜色和TimePicker的其他部分.
到目前为止,我可以更改标题颜色和背景,但我无法更改innercircle和textcolor.

更改自定义主题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的颜色相同,否则可能会以一种糟糕的方式影响你的UX.

标签:android,android-theme,android-timepicker
来源: https://codeday.me/bug/20191005/1854665.html