Как стилизовать android Date- и TimePicker в API 28 - PullRequest
0 голосов
/ 02 апреля 2019

Я создал приложение в Android, чтобы выбрать дату и время с помощью виджета Date- и TimePicker. Вначале я развертывал / компилировал приложение с уровнем API 19. После установки уровня API до 28 весь стиль виджетов был изменен. Так что теперь я должен вручную оформить виджеты, но нет понятия, с чего начать. На следующих рисунках показано, что мне нужно сделать.

Рис 1:
image

Рис 2:
image

После установки android: ширина DatePicker на Рис. 1 для match_parent виджет не заполняет отображение и оставляет пустое пространство с правой стороны, что нежелательно. Кроме того, я хочу, чтобы Numbers были белыми, а зеленые полосы в верхней части виджетов должны быть прозрачными.

Большое спасибо за каждую помощь, где начать или какие свойства должны быть установлены для достижения цели.

1 Ответ

0 голосов
/ 09 мая 2019

Вы должны создать собственный стиль в 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)
        )

...