【问题标题】:Time Picker dialog theme on different devices不同设备上的时间选择器对话框主题
【发布时间】:2018-08-01 07:35:31
【问题描述】:

我在不同设备上设置 TimePickerDialog 时遇到问题

我已经创建了一个样式

<style name="MyTimePickerStyle" parent="Theme.AppCompat.Light.Dialog">

    <item name="android:colorAccent">@android:color/transparent</item>

    <item name="android:textColorPrimary">@color/white</item>
    <item name="android:textColorSecondary">@color/white50</item>
    <item name="android:headerTimeTextAppearance">@color/white50</item>
    <item name="android:textColor">@color/white</item>
    <item name="android:windowBackground">@drawable/gradient_dialog</item>
    <item name="android:headerBackground">@drawable/gradient_dialog</item>
    <item name="android:textColorHighlight">@color/white</item>
    <item name="android:colorControlActivated">@color/white50</item>
    <item name="android:numbersBackgroundColor">@color/dark_three</item>
    <item name="android:numbersInnerTextColor" tools:ignore="NewApi">@color/white50</item>
    <item name="android:amPmTextColor">@color/white50</item>
    <item name="android:numbersTextColor">@color/white50</item>
    <item name="android:numbersSelectorColor">@color/lilac</item>

    <item name="buttonBarNegativeButtonStyle">@style/DialogButtonStyle</item>
    <item name="buttonBarPositiveButtonStyle">@style/DialogButtonStyle</item>
    <item name="buttonBarNeutralButtonStyle">@style/DialogButtonStyle</item>
    <item name="android:buttonBarNeutralButtonStyle">@style/DialogButtonStyle</item>
    <item name="android:buttonBarPositiveButtonStyle">@style/DialogButtonStyle</item>
    <item name="android:buttonBarNegativeButtonStyle">@style/DialogButtonStyle</item>

</style>

在不同的设备和 api lvl-s 上看起来像这样 安卓 26 安卓 23 安卓 21

我都尝试过像

TimePickerDialog(this,R.style.MyTimePickerStyle, listener, hour, minute, true)

或将其添加为 Activity 样式中的样式

<item name="android:timePickerDialogTheme">@style/MyTimePickerStyle</item>

两种情况的结果相同

使用自定义视图创建对话框并将样式添加到 TimePIcker 作为从 @android:style/Widget.Material.Light.TimePicker 继承的视图在不同的设备上给出了不同的结果,但这仍然不是假设的结果。

知道如何正确设置 TimePicker 的样式吗?

干杯 沃伊泰克

【问题讨论】:

  • 我遇到了同样的问题,无法解决。所以我做的最后一件事是进行 api 检查并以不同的方式处理两个选择器。即低于 api 25 及以上 =25
  • :/ 为什么有些参数适用于某些 api 而有些参数不适用,我仍然感到困惑。对我来说这似乎是一个 android 错误

标签: android android-styles android-timepicker


【解决方案1】:

我确实为我的 DatePicker 创建了一个主题,它通过使用以下属性来工作:

<style name="DatePickerTheme" parent="Theme.AppCompat.Light.Dialog">
    <item name="colorAccent">@color/colorPrimary</item>
    <item name="colorControlActivated">@color/colorAccent</item>
</style>

尝试删除 android: 前缀

【讨论】:

  • 它适用于 DatePicker,但不适用于 TimePicker :/
【解决方案2】:

在drawable中添加timepicker_drawable.xml

 <?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
       android:insetLeft="16dp"
       android:insetTop="16dp"
       android:insetRight="16dp"
       android:insetBottom="16dp">

    <shape android:shape="rectangle">
        <corners android:radius="2dp" />
        <solid android:color="#262d37" />
    </shape>

</inset>

添加这是styles.xml

    <style name="MyDialogTheme" parent="Theme.AppCompat.Light.Dialog.Alert">
    <item name="colorControlNormal">@color/darkBackground</item>
    <item name="colorControlActivated">@color/textColor</item>
    <item name="textColorAlertDialogListItem">@color/whiteTextColor</item>
    <item name="colorAccent">@color/textColor</item>
    <item name="android:textColorPrimary">@color/whiteTextColor</item>
    <item name="android:windowBackground">@drawable/timepicker_drawable</item>
</style>

根据您的要求更改颜色,然后TimePickerDialog timePickerDialog = new TimePickerDialog( context, R.style.MyDialogTheme, listener, startHour, startMinute, is24HourFormat);

【讨论】:

  • windowBackground 有效,无效的是 'android:numbersBackgroundColor' 和 'android:numbersSelectorColor'
  • 不,但我在我的风格中使用了窗口背景,并且它应用于整个对话框
猜你喜欢
  • 2012-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-06
  • 2016-08-01
  • 2012-11-02
  • 1970-01-01
相关资源
最近更新 更多