Можно ли изменить цветовую схему datepicker (а также timepicker) для Android 5.0?
Я пробовал установить цвета акцента, но это не работает (как с, так и без android:
):
<!-- colorPrimary is used for the default action bar background -->
<item name="colorPrimary">@color/purple</item>
<!-- colorPrimaryDark is used for the status bar -->
<item name="colorPrimaryDark">@color/purple_tint</item>
<!-- colorAccent is used as the default value for colorControlActivated
which is used to tint widgets -->
<item name="colorAccent">@color/purple_tint</item>
Из оригинала:
Примерно так:
android
dialog
styles
background-color
Warpzit
источник
источник
Ответы:
Причина, по которой предложение Нила приводит к полноэкранному режиму,
DatePicker
заключается в выборе родительской темы:Более того, если вы пойдете по этому пути, вы должны указать тему при создании
DatePickerDialog
:Это, на мой взгляд, нехорошо. Следует попытаться сохранить стили вне java и внутри styles.xml / themes.xml.
Я согласен с тем, что предложение Нила с небольшими изменениями (изменение родительской темы, чтобы сказать,
Theme.Material.Light.Dialog
) даст вам желаемый результат. Но вот другой способ:При первом осмотре мы сталкиваемся с
datePickerStyle
определением таких вещей, как:headerBackground
(что вы пытаетесь изменить)dayOfWeekBackground
, и несколько других цветов текста и стилей текста.Переопределить этот атрибут в теме вашего приложения не получится.
DatePickerDialog
использует отдельную тему, назначаемую атрибутомdatePickerDialogTheme
. Итак, чтобы наши изменения вступили в силу, мы должны переопределитьdatePickerStyle
переопределениеdatePickerDialogTheme
.Вот так:
Переопределить
datePickerDialogTheme
в базовой теме вашего приложения:Определить
MyDatePickerDialogTheme
. Выбор родительской темы будет зависеть от базовой темы вашего приложения: это может быть либо,Theme.Material.Dialog
либоTheme.Material.Light.Dialog
:Мы изменили
datePickerStyle
стильMyDatePickerStyle
. Выбор родителя снова будет зависеть от базовой темы вашего приложения: либо,Widget.Material.DatePicker
либоWidget.Material.Light.DatePicker
. Определите его в соответствии с вашими требованиями:В настоящее время мы переопределяем только значение,
headerBackground
которое по умолчанию установлено на?attr/colorAccent
(именно поэтому предложение Нила работает при изменении фона). Но возможна довольно большая настройка:Если вам не нужен такой большой контроль (настройка), вам не нужно переопределять
datePickerStyle
.colorAccent
контролирует большинствоDatePicker's
цветов. Итак, переопределениеcolorAccent
внутриMyDatePickerDialogTheme
должно работать:Переопределение
colorAccent
дает вам дополнительное преимущество измененияOK
&CANCEL
цветов текста. Неплохо.Таким образом, вам не нужно предоставлять конструктору какую-либо информацию о стиле
DatePickerDialog's
. Все подключено правильно:источник
Попробуйте.
Код
Стиль в вашем файле styles.xml
РЕДАКТИРОВАТЬ - Тема изменена на Theme.AppCompat.Light.Dialog, как было предложено
источник
parent="Theme.AppCompat.Light.Dialog"
вместоparent="Theme.AppCompat.Light"
Создать новый стиль
Код Java:
Родительская тема здесь является ключевой. Выберите свой цветАкцент
Результат:
источник
попробуйте это, работайте для меня
Ставим два варианта,
colorAccent
иandroid:colorAccent
источник
Чтобы упомянуть, вы также можете использовать тему по умолчанию, например
android.R.style.Theme_DeviceDefault_Light_Dialog
.источник
Вам не нужно создавать тему, просто напишите ее в своем объекте создания диалога.
следуйте этому, он даст вам весь стиль выбора даты, это действительно работает
http://www.android-examples.com/change-datepickerdialog-theme-in-android-using-dialogfragment/
источник
У меня была проблема, что кнопки выбора времени не были видны на экране для API 24 в Android. (API 21+) решается
источник
источник
Для изменения цвета текста элемента списка "Год" (СПЕЦИАЛЬНО ДЛЯ ANDROID 5.0)
Просто установите определенный цвет текста в стиле диалога выбора даты. По какой-то причине установка флага
yearListItemTextAppearance
не отражает никаких изменений в списке лет.источник