而我们真正想要的样式是这样的。
这个就漂亮多了。而且很多的时候都不需要显示“年”,下面看通过指定主题来显示自己想要的样式,并且通过反射机制来隐藏“年”,而且可以举一反三,对这上面的东西做任务的修改。
private void showDatePickerDialog() {Calendar calendar = Calendar.getInstance();calendar.setTime(new Date());int year = calendar.get(Calendar.YEAR);final int month = calendar.get(Calendar.MONTH);int day = calendar.get(Calendar.DAY_OF_MONTH);DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(), AlertDialog.THEME_HOLO_LIGHT, onDateSetListener, year, month, day);datePickerDialog.setCancelable(true);DatePicker dp = datePickerDialog.getDatePicker();//设置当天为最小值dp.setMinDate(calendar.getTimeInMillis());//设置最大值是7天calendar.set(Calendar.DAY_OF_MONTH, day + 6);dp.setMaxDate(calendar.getTimeInMillis());try {//获取指定的字段Field field = dp.getClass().getDeclaredField("mYearSpinner");//解封装field.setAccessible(true);//获取当前实例的值NumberPicker np = ((NumberPicker) field.get(dp));np.setVisibility(View.GONE);} catch (NoSuchFieldException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();}datePickerDialog.show();}在实例化DatePickerDialog的时候,第二个参数指定了主题为THEME_HOLO_LIGHT就是想要的样式,而且有一个很好玩的地方,你可以传任何类型为int的值,来看看你手机支持哪些乱七八糟的主题,当然这只是玩下,还是正规点写上这个指定主题。