¿Es posible cambiar el esquema de color del selector de fecha (y también el selector de tiempo) para Android 5.0?
Intenté configurar los colores de acento, pero esto no funciona (con y sin 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>
Del original:
A algo como esto:
android
dialog
styles
background-color
Warpzit
fuente
fuente
Respuestas:
La razón por la que la sugerencia de Neil da como resultado una pantalla completa
DatePicker
es la elección del tema principal:Además, si sigue esta ruta, debe especificar el tema mientras crea
DatePickerDialog
:Esto, en mi opinión, no es bueno. Uno debería intentar mantener el estilo fuera de Java y dentro de styles.xml / themes.xml.
Estoy de acuerdo en que la sugerencia de Neil, con un poco de cambio (cambiando el tema principal para decir,
Theme.Material.Light.Dialog
) obtendrá el resultado deseado. Pero aquí está la otra forma:En la primera inspección, nos encontramos con
datePickerStyle
que define cosas como:headerBackground
(lo que está tratando de cambiar)dayOfWeekBackground
, y algunos otros colores de texto y estilos de texto.No funcionará anular este atributo en el tema de su aplicación.
DatePickerDialog
utiliza un tema independiente asignable por el atributodatePickerDialogTheme
. Por lo tanto, para que nuestros cambios surtan efecto, debemos anulardatePickerStyle
dentro de un anuladodatePickerDialogTheme
.Aquí vamos:
Anular
datePickerDialogTheme
dentro del tema base de su aplicación:Definir
MyDatePickerDialogTheme
. La elección del tema principal dependerá de cuál sea el tema base de su aplicación: podría serTheme.Material.Dialog
oTheme.Material.Light.Dialog
:Hemos anulado
datePickerStyle
con el estiloMyDatePickerStyle
. La elección del padre dependerá una vez más de cuál es el tema base de su aplicación:Widget.Material.DatePicker
oWidget.Material.Light.DatePicker
. Defínalo según sus requisitos:Actualmente, solo estamos anulando lo
headerBackground
que está configurado de forma predeterminada en?attr/colorAccent
(esta es también la razón por la que la sugerencia de Neil funciona para cambiar el fondo). Pero hay muchas posibilidades de personalización:Si no desea tanto control (personalización), no necesita anular
datePickerStyle
.colorAccent
controla la mayoría de losDatePicker's
colores. Entonces, anular solo elcolorAccent
interiorMyDatePickerDialogTheme
debería funcionar:Anulando
colorAccent
le da el beneficio adicional de cambiarOK
yCANCEL
los colores del texto también. No está mal.De esta manera, no tiene que proporcionar ninguna información de estilo al
DatePickerDialog's
constructor. Todo ha sido cableado correctamente:fuente
Pruébelo.
El código
El estilo en su archivo styles.xml
EDITAR: tema cambiado a Theme.AppCompat.Light.Dialog como se sugiere
fuente
parent="Theme.AppCompat.Light.Dialog"
lugar deparent="Theme.AppCompat.Light"
Crea un nuevo estilo
Código Java:
El tema principal es la clave aquí. Elige tu color Acento
Resultado:
fuente
prueba esto, trabaja para mi
Pon las dos opciones
colorAccent
yandroid:colorAccent
fuente
Solo por mencionar, también puede usar el tema predeterminado como en su
android.R.style.Theme_DeviceDefault_Light_Dialog
lugar.fuente
No tienes un tema de creación, solo escríbelo en tu objeto de creación de diálogo
siga esto, le dará todo tipo de estilo de selector de fecha, realmente funciona
http://www.android-examples.com/change-datepickerdialog-theme-in-android-using-dialogfragment/
fuente
Tuve el problema de que los botones del selector de tiempo no se veían en la pantalla de API 24 en Android. (API 21+) se resuelve mediante
fuente
fuente
Para cambiar el color del texto del elemento de la lista de año (ESPECÍFICO PARA ANDROID 5.0)
Simplemente establezca cierto color de texto en el estilo de diálogo del selector de fecha. Por alguna razón, la configuración de la bandera
yearListItemTextAppearance
no refleja ningún cambio en la lista de años.fuente