DatePickerDialog 修改,只显示月日,隐藏年
需求要只显示月和日的日历控件,又不想自定义控件,最简单的办法就是隐藏显示年的这个框了,但DatePickerDialog并没有直接提供方法来操作,这里分享一个笨办法:)
效果图:
默认
处理后
代码片段1
/** * 从当前Dialog中查找DatePicker子控件 * * @param group * @return */ private DatePicker findDatePicker(ViewGroup group) { if (group != null) { for (int i = 0, j = group.getChildCount(); i < j; i++) { View child = group.getChildAt(i); if (child instanceof DatePicker) { return (DatePicker) child; } else if (child instanceof ViewGroup) { DatePicker result = findDatePicker((ViewGroup) child); if (result != null) return result; } } } return null; } final Calendar cal = Calendar.getInstance(); mDialog = new CustomerDatePickerDialog(getContext(), this, cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH)); mDialog.show(); DatePicker dp = findDatePicker((ViewGroup) mDialog.getWindow().getDecorView()); if (dp != null) { ((ViewGroup) dp.getChildAt(0)).getChildAt(0).setVisibility(View.GONE); } class CustomerDatePickerDialog extends DatePickerDialog { public CustomerDatePickerDialog(Context context, OnDateSetListener callBack, int year, int monthOfYear, int dayOfMonth) { super(context, callBack, year, monthOfYear, dayOfMonth); } @Override public void onDateChanged(DatePicker view, int year, int month, int day) { super.onDateChanged(view, year, month, day); mDialog.setTitle((month + 1) + "月" + day + "日"); } } 1 楼 liuxian13183 2012-02-14 能不能把详细的代码或者demo发一下,jackie.new@163.com 谢谢!