2011-04-13 66 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"); 
    }; 
}