1.效果图
2.主界面,调用 MyDatePicker
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
/*1.响应开始日期设置按钮事件MainActivity.this*/
if(v == mBSDate){
new MyDatePicker(MainActivity.this,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
// TODO Auto-generated method stub
monthOfYear++;
String str=mETStart.getText().toString();
String fixedstr=str.substring(10);
String mMonthstr,mDaystr;
mMonthstr=""+monthOfYear;
mDaystr=""+dayOfMonth;
if(monthOfYear<10)
{
mMonthstr="0"+mMonthstr;
}
if(dayOfMonth<10)
{
mDaystr="0"+mDaystr;
}
str=year+"-"+mMonthstr+"-"+mDaystr+fixedstr;
mETStart.setText(str);
}},mCalendar.get(Calendar.YEAR),mCalendar.get(Calendar.MONTH),mCalendar.get(Calendar.DAY_OF_MONTH)
).show();
}
}
3.定义 MyDatePicker
package com.example.parkbook;
import java.lang.reflect.Field;
import java.util.Calendar;
import java.util.Date;
import android.app.DatePickerDialog;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.DatePicker;
import android.widget.LinearLayout;
/**
* 日期选择对话框
* @author hp
*
*/
public class MyDatePicker extends DatePickerDialog {
public MyDatePicker(Context context, OnDateSetListener callBack, int year,
int monthOfYear, int dayOfMonth) {
super(context, callBack, year, monthOfYear, dayOfMonth);
}
public MyDatePicker(Context context, OnDateSetListener callBack, int year,
int monthOfYear, int dayOfMonth,int type){
super(context, callBack, year, monthOfYear, dayOfMonth);
}
/**
*
*/
@Override
public void onDateChanged(DatePicker view, int year, int month, int day) {
//((ViewGroup) ((ViewGroup) view.getChildAt(0)).getChildAt(0)).getChildAt(2).setEnabled(false);
super.onDateChanged(view, year, month, day);
}
/**
* 更新日期对话框
*/
@Override
public void updateDate(int year, int monthOfYear, int dayOfMonth) {
super.updateDate(year, monthOfYear, dayOfMonth);
}
@Override
public void show() {
// TODO Auto-generated method stub
super.show();
DatePicker dp = findDatePicker((ViewGroup) this.getWindow().getDecorView());
if (dp != null) {
((ViewGroup) ((ViewGroup) dp.getChildAt(0)).getChildAt(0)).getChildAt(2).setEnabled(false); /*j禁用年的+-按钮*/
// ((ViewGroup) ((ViewGroup) dp.getChildAt(0)).getChildAt(1)).getChildAt(2).setEnabled(false); /*j禁用月的+-按钮*/
//((ViewGroup) ((ViewGroup) dp.getChildAt(0)).getChildAt(2)).getChildAt(2).setEnabled(false);/*j禁用日的+-按钮*/
}
/**
* 从当前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;
}
}
///