-2

我有一个具有 DatePickerDialog 的应用程序。当我在不同的设备上运行相同的代码运行不同的机器人时,我得到一个不同的对话框。我理解这样一个事实,即在不同版本的 android 中,相同的小部件在外观上可能会有所不同,但为什么 wigets 功能与相同的源代码不同。

下面是两个小部件,第一个是 android 2.3.3,第二个是 Android 4.0.4。我知道它们看起来不同,但我希望在小部件顶部反映日期,因为它在 2.3.3 版本中,但在 4.0.4 中。为什么 4.0.4 中不显示“Thursday, 08/Nov/2012”?

2.3.3

4.0.4

4

2 回答 2

1

为什么 4.0.4 中不显示“Thursday, 08/Nov/2012”?

只有做出这个决定的人才能回答。如果我不得不尝试一下,我猜他们认为它更漂亮。

您当然可以自由地创建自己的日期选择器对话框,以显示您想要的所有信息。如果您希望让您的应用程序在所有 API 版本中保持 100% 一致,那么这可能是最佳途径。

编辑:

这是 DatePickerDialog 的源代码

看起来您可以覆盖 DatePickerDialog 的 onDateChanged() 以获得您想要的效果。我正在编写一个示例代码块,以便现在发布。

再次编辑:

好的,这是一个使其在我可以访问的 4.0.3 设备上正常工作的片段。

   df = DateFormat.getDateInstance(DateFormat.FULL);
   mCal = Calendar.getInstance();
   // Create a date picker dialog
   DatePickerDialog datePickerDialog = new DatePickerDialog(this,datePickerDialogListener, year, month, day){
       @Override
       public void onDateChanged(DatePicker view, int year,int month, int day){
           mCal.set(Calendar.YEAR, year);
            mCal.set(Calendar.MONTH, month);
            mCal.set(Calendar.DAY_OF_MONTH, day);
           setTitle(df.format(mCal.getTime()));
       }
   };

您必须在显示对话框之前第一次添加代码以设置它。

于 2012-11-08T15:01:12.157 回答
0

最初(2.3 和更早的 [honeycomb?])标题会自动更新为当前日期。我认为他们意识到这可能并不总是需要的(例如,我知道在 2.3 中设置“纯文本”标题很痛苦)所以他们将其更改为纯文本。您可以检查两个版本的代码:2.34.0。我相信让它看起来像 2.3 比 4.0 更容易,但你将不得不对其进行自定义。

于 2012-11-08T15:03:33.037 回答