2011-04-13 72 views
1

我已經實現了DatePickerDialog,它工作。但是,標題似乎沒有格式。例如,它應該閱讀:週二,4月12日,2011年。但是,相反它讀取3,2011 4 12Android DatePickerDialog標題問題

的源代碼看起來應該被格式化的稱號,但它不是:

private void updateTitle(int year, int month, int day) { 
    mCalendar.set(Calendar.YEAR, year); 
    mCalendar.set(Calendar.MONTH, month); 
    mCalendar.set(Calendar.DAY_OF_MONTH, day); 
    setTitle(mTitleDateFormat.format(mCalendar.getTime())); 
} 
+0

我確實找到了答案。如果我擴展DatePickerDialog,我可以對它進行更多的控制,並根據我的喜好修改標題。 – srowley 2011-04-13 04:03:48

回答

4

正如你所說,DatePickerDialog標題格式取決於在DatePickerDialog構造函數中初始化的「mTitleDateFormat」, 像這樣:mTitleDateFormat = java.text.DateFormat。 getDateInstance(java.text.DateFormat.FULL);

但是mTitleDateFormat是私有的,外層不能修改。所以你可以擴展類DatePickerDialog。

下面的代碼在我的工作中很好地工作。 類別代碼:

class DatePickerDialog extends android.app.DatePickerDialog { 
    public DatePickerDialog(Context context, OnDateSetListener callBack, 
      int year, int monthOfYear, int dayOfMonth) { 
     super(context, callBack, year, monthOfYear, dayOfMonth); 
     updateTitle(year, monthOfYear, dayOfMonth); 
    } 
    public void onDateChanged(DatePicker view, int year, 
      int month, int day) { 
     updateTitle(year, month, day); 
    } 
    private void updateTitle(int year, int month, int day) { 
     Calendar mCalendar = Calendar.getInstance(); 
     mCalendar.set(Calendar.YEAR, year); 
     mCalendar.set(Calendar.MONTH, month); 
     mCalendar.set(Calendar.DAY_OF_MONTH, day); 
     setTitle(getFormat().format(mCalendar.getTime())); 
    } 
     /* 
     * the format for dialog tile,and you can override this method 
     */ 
    public SimpleDateFormat getFormat(){ 
     return new SimpleDateFormat("yyyy-MM-dd"); 
    }; 
}