2011-08-26 38 views
8

He estado tratando de obtener una respuesta a esta pregunta durante bastante tiempo. También eché un vistazo al siguiente enlace: Android - DatePicker Widget Format. En mi teléfono/emulador (v 2.3.3), tanto el widget DatePicker como el cuadro de diálogo no toman el formato de fecha especificado en la configuración (Configuración-> Fecha & Hora-> Seleccionar formato de fecha). Siempre están en el formato "MM/dd/aaaa". La configuración regional está configurada en inglés del Reino Unido.Android: ¿Cómo cambiar el formato de fecha de visualización de DatePicker de MM/dd/aaaa a dd/MM/aaaa?

consigo "d/MM/aaaa" cuando leí los ajustes con:

Settings.System.getString(getContentResolver(), Settings.System.DATE_FORMAT);

¿Alguien tiene una idea acerca de cómo cambiar el formato de fecha en una vista DatePicker?

Respuesta

12

Para anular el formato DatePicker la mejor opción sería anular uno de sus constructores con una ligera modificación del código original. Puede editar ViewGroup en el código para usted, pero consideraría seriamente no hacerlo de esa manera.

  1. Crear LocalizedDatePicker clase
  2. Anulación public DatePicker (Context context, AttributeSet attrs, int defStyle)http://developer.android.com/reference/android/widget/DatePicker.html#DatePicker(android.content.Context, android.util.AttributeSet, int)
  3. Copia el código de la original DatePicker constructor (puede que tenga que seleccionar una rama diferente después de algunas pruebas, he vinculado la head)
  4. Sobrescribe los métodos que llaman a reorderSpinners() para eliminar esa llamada.
  5. cambiar la línea inflater.inflate(R.layout.date_picker, this, true); con inflater.inflate(my.package.R.layout.localized_date_picker, this, true);
  6. Copiar el diseño original a su date_picker.xml localized_date_picker.xml recurso local
  7. Editar el archivo para el orden deseado, ya que está editando este favor respete la localización de otros lugares y Guarde una copia del original en su carpeta de diseño global y coloque el archivo local_date_picker.xml en la carpeta específica de su región. Dado que el diseño del sistema es Mes Día Año, las personas en otros lugares pueden esperar ese pedido.
+0

Gracias mucho por la respuesta completa. Es una lástima que haya que hacer mucho para lo que parece ser un error en la configuración regional de En UK (ver [Anotación de fecha y hora en el Reino Unido] (http://en.wikipedia.org/wiki/Date_and_time_notation_in_the_United_Kingdom)) Supongo que en el n. ° 6 quieres decir reordenar Pickers() en lugar de reorderDates()? – Ovid

+0

Vaya, sí, la corrección se publicará en breve. –

+0

El enlace original del constructor DatePicker está roto –

3

Esa configuración es muy específico. Solo se aplica a las fechas de fechas que se muestran en "formato corto". Siempre y cuando esté utilizando cualquier otra cosa (en este caso, el DatePicker parece estar usando "medio"), entonces esa configuración se descartará y el formato predeterminado de la configuración regional se hará cargo.

Puedo confirmar que si cambia el idioma de su teléfono (y, de hecho, la configuración regional), el orden de los elementos cambia en el selector de fecha. Lo que supongo significa que no estoy de acuerdo con la afirmación de Dan S de que "el sistema no usa ningún mecanismo para localizar el DatePicker". Si miras el código, puedes ver eso (al menos desde 2.1), hay un método reorderPickers() que hace exactamente esto.

Inglés: English

francesa: French

+0

dmon, gracias por la corrección. –

+2

Gracias por la respuesta, ahora entiendo cómo funciona esto. Es curioso que date_picker.xml parezca contradecir este comportamiento: _Advertencia: todo el contenido del elemento primario se elimina y se reordena según el formato de fecha seleccionado por el usuario. De todos modos, dado que parece que se usa la configuración regional actual, eso significa para mí que el formato de fecha predeterminado en la configuración regional de En UK (mm/dd/aaaa) es incorrecto, como debería ser dd/mm/aaaa: [la notación de fecha y hora en el Reino Unido] (http: //en.wikipedia. org/wiki/Date_and_time_notation_in_the_United_Kingdom). – Ovid

+0

@Ovid English en contexto de América ... y hay muchas implementaciones incorrectas en el marco de Android relacionadas con la localización ... – Tobrun

Cuestiones relacionadas