Android TimePickerDialog guía de estilo / docs?

Estoy intentando diseñar un TimePickerDialog para sdk 21+ (Lollipop). Hasta ahora he descubierto cómo cambiar el colorscheme predeterminado en XML:

<style name="TimePickerTheme" parent="@style/Theme.AppCompat.Light.Dialog"> <item name="colorPrimary">#ff2d6073</item> <!-- no effect --> <item name="colorPrimaryDark">#ff2d6073</item> <!-- no effect --> <item name="colorAccent">#ff2d6073</item> <item name="android:textColor">#ffD0D102</item> <item name="android:textColorPrimary">#ffD0D102</item> </style> 

Esto funciona, pero estoy buscando una guía o documentación para todas las propiedades que puedo cambiar.

  • AccentColor hace el esquema de color básico
  • TextColorPrimary hace el color del texto

Pero, ¿qué propiedad, por ejemplo, necesito cambiar el texto grande en el "encabezado" del diálogo (donde se muestra la hora seleccionada actual)?

¿Hay alguna documentación que enumera todas las cosas posibles que puedes cambiar?

Después de excavar a través del tema AOSP y los archivos de estilo xml y un montón de google he hecho algunos progresos. Ahora soy capaz de estilo la mayoría (!) Cosas.

Así que esta es una respuesta parcial, no todo el camino hasta allí. Pero aquí está lo lejos que tengo:

Introduzca aquí la descripción de la imagen

Usted puede ver que ahora soy capaz de tema de la cabecera, la parte de tiempo un (!) Seleccionado (minutos en este caso), el círculo, los números en ese círculo y la "mano" (o selector). Ah, y los botones están diseñados, también.

Permítanme explicarles cómo funcioné, primero: lo importante es que no se puede anular las cosas directamente desde el tema de la aplicación o desde un tema / estilo de diálogo (de alerta). Tienes que ir de uno a otro, por así decirlo.

Ejemplo:

AndroidManifest.xml: establece el tema personalizado para la aplicación y / o la actividad

 <activity> android:theme="@style/Theme.MyTheme" </activity> 

Values-v21 / styles.xml: (donde reside su tema personalizado): establece el timePickerDialogTheme

 <style name="Theme.MyTheme" parent="@style/Theme.AppCompat.Light"> <item name="android:timePickerDialogTheme">@style/TimePickerDialogTheme</item> </style> 

A continuación, defina el timePickerDialogTheme y establezca el timePickerStyle:

 <style name="TimePickerDialogTheme" parent="@style/Theme.AppCompat.Light.Dialog"> <item name="colorAccent">#ff2d6073</item> <!-- colorAccent here seems to work just fine? --> <item name="android:timePickerStyle">@style/TimePickerDialogStyle</item> </style> 

Ahora puedes definir la mayor parte del estilo aquí ..

 <style name="TimePickerDialogStyle" parent="@android:style/Widget.Material.Light.TimePicker"> <item name="colorAccent">#ff2d6073</item> <!-- colorAccent here seems to work just fine? --> <item name="android:timePickerMode">clock</item> <item name="android:headerBackground">#ff2d6073</item> <item name="android:headerTimeTextAppearance">@style/TextAppearance.TimePickerDialogStyle.TimeLabel</item> <!-- TimePicker Time *TextAppearance* --> <item name="android:numbersTextColor">#ff000000</item> <item name="android:numbersSelectorColor">#ff2d6073</item> <item name="android:numbersBackgroundColor">#ffdddddd</item> </style> 

La línea importante de lo anterior es:

 <item name="android:headerTimeTextAppearance">@style/TextAppearance.TimePickerDialogStyle.TimeLabel</item> 

Porque si quieres estilo el texto (bien, el tiempo, en realidad) en el encabezado que necesita para definir el headerTimeTextAppearance:

 <style name="TextAppearance.TimePickerDialogStyle.TimeLabel" parent="@android:style/TextAppearance.Material"> <item name="android:textSize">60sp</item> <!-- from --> <item name="android:textColor">#ffD0D102</item> </style> 

Ahora, si echa un vistazo a Widget.Material.TimePicker en AOSP styles.xml (ctrl-f 'timepicker' hasta que lo encuentre) notará un puñado de otras propiedades que debería ser capaz de modificar:

HeaderTimeTextAppearance headerAmPmTextAppearance headerSelectedTextColor headerBackground numbersTextColor numbersBackgroundColor amPmTextColor amPmBackgroundColor amPmSelectedBackgroundNúmero de coloresSelectorColor

La mayoría de estos trabajos (siempre y cuando se prepend 'android:' para cada uno de ellos), pero no podía obtener 'headerSelectedTextColor' para trabajar. Tengo un error de compilación diciendo algo como "no podía coincidir con la propiedad bla bla". Además, si miras mi ejemplo anterior, codifiqué el textSize para la propiedad 'headerTimeTextAppearance' porque el valor '@ dimen / timepicker_ampm_label_size' arrojó errores.

En resumen: la mayoría de las cosas se enumeran arriba y cómo conseguir que funcionen. Pero no todo está claro. Así que todavía veo que la documentación completa / guía 🙂

  • Android API 21+ - ocultar el reloj analógico en TimePickerDialog mediante programación
  • ¿Es posible cambiar el estilo de un Android L TimePickerDialog?
  • Conflicto de modo de 12/24 horas
  • Fecha y hora Validación en android usando edittext oyente
  • Android TimePicker parece recortado
  • Android TimePickerDialog color del diseño del material
  • Cómo personalizar TimePicker en el diseño de material android?
  • Android - ¿Cómo cambiar programaticamente el modo timepicker?
  • Cómo crear un nuevo cuadro de diálogo "circle" datepicker android
  • Editar los minutos anteriores y posteriores en Android TimePicker cuando el intervalo que estoy incrementando es de 5
  • ScrollView luchando con scroll de TimePicker, Timepicker no desplazándose como resultado
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.