Android: Как изменить формат даты просмотра DatePicker с ММ / дд / гггг на дд / мм / гггг? - PullRequest
9 голосов
/ 26 августа 2011

Я давно пытаюсь получить ответ на этот вопрос. Я также взглянул на следующую ссылку: Android - DatePicker Widget Format . На моем телефоне / эмуляторе (v 2.3.3) виджет DatePicker и диалоговое окно не принимают формат даты, указанный в настройках (Настройки-> Дата и время-> Выбрать формат даты). Они всегда в формате «ММ / ДД / ГГГГ». Локаль установлена ​​на английский Великобритания.

Я получаю «д / мм / гггг», когда читаю настройки с помощью:

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

Кто-нибудь имеет представление о том, как изменить формат даты в представлении DatePicker?

Ответы [ 2 ]

13 голосов
/ 26 августа 2011

Чтобы переопределить формат DatePicker, лучше всего переопределить один из его конструкторов с небольшим редактированием исходного кода. Вы можете редактировать ViewGroup в коде для себя, но я бы серьезно подумал не делать это таким образом.

  1. Создать класс LocalizedDatePicker
  2. Переопределить public DatePicker (Контекст контекста, атрибуты AttributeSet, int defStyle) http://developer.android.com/reference/android/widget/DatePicker.html#DatePicker(android.content.Context, android.util.AttributeSet, int)
  3. Скопируйте код из оригинального конструктора DatePicker (вам может понадобиться выбрать другую ветку после некоторого тестирования, я связал голову)
  4. Переопределите методы, которые вызывают reorderSpinners (), чтобы удалить этот вызов.
  5. Заменить строку inflater.inflate(R.layout.date_picker, this, true); на inflater.inflate(my.package.R.layout.localized_date_picker, this, true);
  6. Скопируйте оригинальный макет date_picker.xml в локальный ресурс localized_date_picker.xml
  7. Отредактируйте файл в соответствии с желаемым порядком, так как вы редактируете его, пожалуйста, соблюдайте локализацию других мест и сохраните копию оригинала в вашей папке глобального макета и поместите localized_date_picker.xml в папку, специфичную для вашего региона. Поскольку схема системы соответствует месяцу и году, люди в других местах могут ожидать такой порядок.
3 голосов
/ 26 августа 2011

Эта настройка очень специфическая.Он предназначен только для дат, показанных в «коротком формате».Пока вы используете что-то еще (в этом случае DatePicker, кажется, использует «средний»), эти настройки будут игнорироваться, и форматирование по умолчанию будет иметь место.

Я могу подтвердить, чтоесли вы измените язык телефона (и, фактически, локаль), порядок элементов меняет в окне выбора даты.То, что я предполагаю, означает, что я не согласен с утверждением Дэна С., что «система не использует какой-либо механизм для локализации DatePicker».Если вы посмотрите на код, вы увидите, что (по крайней мере, начиная с версии 2.1) есть метод reorderPickers () , который делает именно это.

Английский: English

Французский: French

...