2012-11-08 70 views
-2

我有一個有DatePickerDialog的應用程序。當我在不同的設備上運行相同的代碼運行不同的機器人我得到不同的對話框。我瞭解這樣一個事實,即在不同版本的Android中,相同的小部件可以看起來在理論上有所不同,但爲什麼wigets功能應該與源代碼不同。爲什麼窗口小部件在不同版本的android中以不同的方式顯示?

下面是兩個小部件,第一個是android 2.3.3,第二個是Android 4.0.4。我知道它們看起來不一樣,但我希望在小部件的頂部重新制作日期,因爲它在2.3.3版本中,但是在4.0.4中。爲什麼「4.0,08/Nov/2012」不顯示在4.0.4中?

2.3.3

4.0.4

回答

1

爲什麼 「週四,08 /十一月/ 2012」 不是在4.0.4中顯示?

只有做出該決定的人才能夠回答。如果我不得不刺傷它,我會猜想他們認爲它在某種程度上更漂亮。

當然,您可以自由創建自己的日期選擇器對話框,該對話框將您想要的所有信息顯示爲您想要的樣子。如果您希望讓您的應用程序在所有API版本中保持100%一致,那麼這可能是最佳途徑。

編輯:

Here is the source code for DatePickerDialog

看起來你可以覆蓋onDateChanged()的DatePickerDialog的得到你想要的效果。我正在研究一個樣本代碼塊現在發佈。

再次編輯:

確定這裏是使得我有機會到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())); 
     } 
    }; 

您必須在代碼中添加以在顯示對話框之前第一次設置它。

+0

好的,謝謝你指點自定義對話框? – turtleboy

+0

DatePickerDialog有一個'setTitle()'方法,你可以用它來設置一個字符串。在那裏你需要這樣做取決於它需要怎樣的行爲。標題中的日期是否需要隨着用戶使用按鈕更改日期而改變? – FoamyGuy

+0

是的,它確實需要更改並顯示星期幾。這是照顧者正在查找他們的轉輪。如果你可以獲得對DatePicker的引用,那麼DatePicker對象就有一個onChanged()監聽器,這對他們來說只是點擊+按鈕而已,而不必在腦海中制定一個日期 – turtleboy

0

最初(2.3和更早版本[蜂窩?]),標題自動更新爲當前日期。我認爲他們意識到這可能並不總是需要的(例如,在2.3中設置「純文本」標題是一種痛苦,我知道),所以他們將其改爲純文本。您可以檢查兩種版本的代碼:2.34.0。我相信使它看起來像2.3比4.0更容易,但你將不得不定製它。

相關問題