É possível alterar o esquema de cores do selecionador de data (e também do selecionador de tempo) para o Android 5.0?
Tentei definir as cores de destaque, mas isso não funciona (com e sem 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>
Do original:
Para algo assim:
android
dialog
styles
background-color
Warpzit
fonte
fonte
Respostas:
A razão pela qual a sugestão de Neil resulta em tela cheia
DatePicker
é a escolha do tema pai:Além disso, se você seguir esse caminho, deverá especificar o tema ao criar
DatePickerDialog
:Isso, na minha opinião, não é bom. Deve-se tentar manter o estilo fora de java e dentro de styles.xml / themes.xml.
Eu concordo que a sugestão de Neil, com um pouco de mudança (mudando o tema pai para dizer,
Theme.Material.Light.Dialog
), você obterá o resultado desejado. Mas, aqui está a outra maneira:Na primeira inspeção, encontramos o
datePickerStyle
que define coisas como:headerBackground
(o que você está tentando mudar)dayOfWeekBackground
, e algumas outras cores e estilos de texto.Substituir este atributo no tema do seu aplicativo não funcionará.
DatePickerDialog
usa um tema separado atribuível pelo atributodatePickerDialogTheme
. Portanto, para que nossas alterações tenham efeito, devemos substituirdatePickerStyle
dentro de uma substituiçãodatePickerDialogTheme
.Aqui vamos nós:
Substituir
datePickerDialogTheme
dentro do tema base do seu aplicativo:Defina
MyDatePickerDialogTheme
. A escolha do tema pai dependerá de qual é o tema base do seu aplicativo: pode serTheme.Material.Dialog
ouTheme.Material.Light.Dialog
:Nós substituímos
datePickerStyle
com o estiloMyDatePickerStyle
. A escolha do pai mais uma vez dependerá de qual é o tema base do seu aplicativo: ouWidget.Material.DatePicker
ouWidget.Material.Light.DatePicker
. Defina-o de acordo com seus requisitos:Atualmente, estamos apenas substituindo o
headerBackground
que por padrão é definido como?attr/colorAccent
(é também por isso que a sugestão de Neil funciona na mudança do plano de fundo). Mas há bastante personalização possível:Se você não deseja tanto controle (personalização), não é necessário substituí-lo
datePickerStyle
.colorAccent
controla a maioria dasDatePicker's
cores. Portanto, substituir apenascolorAccent
dentroMyDatePickerDialogTheme
deve funcionar:Substituindo
colorAccent
lhe dá a vantagem de mudarOK
eCANCEL
cores de texto também. Não é ruim.Dessa forma, você não precisa fornecer nenhuma informação de estilo ao
DatePickerDialog's
construtor. Tudo foi conectado corretamente:fonte
Experimente.
O código
O estilo em seu arquivo styles.xml
EDIT - Tema alterado para Theme.AppCompat.Light.Dialog conforme sugerido
fonte
parent="Theme.AppCompat.Light.Dialog"
vez deparent="Theme.AppCompat.Light"
Crie um novo estilo
Código Java:
O tema pai é a chave aqui. Escolha o seu colorAccent
Resultado:
fonte
tente isso, trabalhe para mim
Coloque as duas opções
colorAccent
eandroid:colorAccent
fonte
Só para mencionar, você também pode usar o tema padrão como
android.R.style.Theme_DeviceDefault_Light_Dialog
.fonte
Você não precisa criar um tema, basta escrevê-lo no seu objeto de criação de diálogo
siga isto lhe dará todo o tipo de estilo de selecionador de data é realmente trabalho
http://www.android-examples.com/change-datepickerdialog-theme-in-android-using-dialogfragment/
fonte
Eu tive o problema de que os botões do seletor de tempo não eram vistos na tela da API 24 no Android. (API 21+) é resolvido por
fonte
fonte
Para alterar a cor do texto do item da lista de ano (ESPECÍFICO PARA ANDROID 5.0)
Basta definir uma determinada cor de texto no estilo de diálogo do selecionador de data. Por algum motivo, a configuração do sinalizador
yearListItemTextAppearance
não reflete nenhuma alteração na lista de anos.fonte