在写DatePickerDialog的时候经常会出现月份是中文(或者是英文字母)的情况,如下图,这时候可恶的老板却总是要求必须要数字显示,废话不多说,直接上代码。
public class NewDatePicker extends DatePickerDialog {
private String[] mDisplayMonths = {"1", "2", "3","4", "5", "6","7", "8", "9","10", "11", "12"};
@SuppressLint("NewApi")
@Override
public void onDateChanged(DatePicker view, int year, int month, int day) {
super.onDateChanged(view, year, month, day);
setTitle(year, month, day);
//关键行
((NumberPicker)((ViewGroup) ((ViewGroup) view.getChildAt(0)).getChildAt(0)).getChildAt(1)).setDisplayedValues(mDisplayMonths);
}
}
主要意思就是找到DatePicker里面月份的显示NumberPicker,然后设定显示值。
这样就可以了。。。。。调节的时候就是数字显示了
but
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
在第一次显示的时候还是没有变化,所以在首次调用的时候,我们需要加入以下代码
dialog.show();
DatePicker dp = findDatePicker((ViewGroup) dialog.getWindow().getDecorView());
if (dp != null) {
((NumberPicker) ((ViewGroup) ((ViewGroup) dp.getChildAt(0)).getChildAt(0)).getChildAt(1)).setDisplayedValues(mDisplayMonths);
}
主要的意思就是找到dialog里面的DatePicker,然后再设定一次。。。。。。。这样就结束了
效果如下