为什么小部件在不同版本的android中显示不同?

时间:2012-11-08 14:57:01

标签: android widget datepickerdialog

我的应用程序有一个DatePickerDialog。当我在不同的设备上运行相同的代码运行不同的机器人我得到一个不同的对话框。我理解在不同版本的android中,相同的小部件可能看起来不同但为什么wigets功能与同一源代码不同。

下面是两个小部件,第一个是android 2.3.3,第二个是Android 4.0.4。我知道它们看起来不一样,但是我希望在小部件的顶部处理日期,就像它在2.3.3版本中一样,但在4.0.4中。为什么“2012年8月8日星期四”未在4.0.4中显示?

2.3.3

4.0.4

2 个答案:

答案 0 :(得分:1)

  

为什么“2012年11月8日星期四”未在4.0.4中显示?

只有做出该决定的人才能回答。如果我不得不捅它,我猜他们认为它不知何故更漂亮。

您当然可以自由创建自己的日期选择器对话框,该对话框会根据您的需要显示您想要的所有信息。如果您希望所有API版本的应用程序100%一致,那么这可能是最佳选择。

修改

Here is the source code for 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()));
       }
   };

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

答案 1 :(得分:0)

最初(2.3及更早[蜂窝?])标题自动更新为当前日期。我认为他们意识到这可能并不总是需要的(例如,设置一个"纯文本" 2.3中的标题,我知道这很痛苦)因此他们将其改为纯文本。您可以查看代码的两个版本:2.34.0。我认为让它看起来像2.3而不是4.0更容易,但你必须自定义它。