如何在API 28中设置android日期和时间选择器的样式

时间:2019-04-02 18:11:49

标签: java android datepicker widget timepicker

我已经在android中构建了一个应用程序,以使用Date-和TimePicker小部件选择日期和时间。最初,我是使用API​​ Level 19部署/编译应用程序。将API Level设置为28后,更改了整个小部件样式。 所以我现在必须手动设置小部件的样式,但是不知道从哪里开始。以下图片显示了我需要做的事情。

图片1:


图片2:

在Pic 1中将DatePicker的android:width设置为match_parent之后,小部件不会填充显示内容,并在右侧保留了空白,这是不希望的。 另外,我想使数字变成白色,并且小部件顶部的绿色条应该是透明的。

非常感谢您的每项帮助,从何处开始或必须设置哪些属性才能实现目标。

1 个答案:

答案 0 :(得分:0)

您应该在styles.xml中创建自定义样式:

   <style name="YourDialog" parent="@style/Theme.AppCompat.DayNight.Dialog">
       <item name="android:colorAccent">@color/ts_blue</item>
       <item name="android:buttonTint">@color/ts_blue</item>
       <item name="colorControlActivated">@color/ts_blue</item>
       <item name="colorControlHighlight">@color/menu_separator_gray</item>
       <item name="android:windowBackground">@color/ts_white</item>
       <item name="android:buttonBarNegativeButtonStyle">@style/DialogButtonStyle</item>
       <item name="android:buttonBarPositiveButtonStyle">@style/DialogButtonStyle</item>
       <item name="android:buttonBarNeutralButtonStyle">@style/DialogButtonStyle</item>
   </style>

然后这样申请:

 val datePickerDialog = DatePickerDialog(context, R.style.YourDialog,
                DatePickerDialog.OnDateSetListener { _, year, month, dayOfMonth ->
                    calendar.set(Calendar.YEAR, year)
                    calendar.set(Calendar.MONTH, month)
                    calendar.set(Calendar.DAY_OF_MONTH, dayOfMonth)
                    val formattedDate = DefaultDateFormatter().formatDate(
                            date = Date(calendar.timeInMillis),
                            dateFormat = datePickerReturnDateFormat)

                    filter.id = formattedDate

                    onFilterSelectionDone()
                },
                calendar.get(Calendar.YEAR),
                calendar.get(Calendar.MONTH),
                calendar.get(Calendar.DAY_OF_MONTH)
        )