Android:如何将DatePicker视图日期格式从MM / dd / yyyy更改为dd / MM / yyyy?

时间:2011-08-26 18:00:14

标签: android datepicker date-format

我一直试图回答这个问题很长一段时间。我还看了以下链接:Android - DatePicker Widget Format。 在我的手机/模拟器(v 2.3.3)上,DatePicker小部件和对话框都不采用设置中指定的日期格式(设置 - >日期和时间 - >选择日期格式)。它们始终采用“MM / dd / yyyy”格式。该区域设置为英国英语。

当我阅读设置时,我得到“d / MM / yyyy”:

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

有人知道如何在DatePicker视图中更改日期格式吗?

2 个答案:

答案 0 :(得分:12)

要覆盖DatePicker格式,最好的办法是覆盖其中一个构造函数,并略微编辑原始代码。您可以在代码中编辑ViewGroup,但我认真考虑不这样做。

  1. 创建类LocalizedDatePicker
  2. 覆盖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. 复制original DatePicker constructor中的代码(经过一些测试后,您可能需要选择不同的分支,我已经将头部链接起来)
  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放入您的区域特定文件夹中。由于系统的布局是月日,其他地方的人可能会期望订单。

答案 1 :(得分:3)

该设置非常具体。它仅适用于以“短格式”显示的日期日期。只要您使用其他任何东西(在这种情况下,DatePicker似乎使用“medium”),那么这些设置将被忽略,并且Locale的默认格式将接管。

我可以确认,如果您更改手机的语言(实际上是区域设置),则 元素的顺序会在日期选择器中发生变化。我猜这意味着我不同意Dan S的断言“系统不使用任何机制来本地化DatePicker”。如果您查看代码,您可以看到(至少从2.1开始),有一个reorderPickers()方法就是这样做的。

英文:  English

法语:  French