DatePickerDialog 控制只选择年月或年或月

时间:2022-02-11 10:52:41
etXyLevelDate.setOnTouchListener(selectDateTouchListener());
/**
* @desc 选择日期操作
* @param @return
* @return OnTouchListener
* @throws
*/
OnTouchListener selectDateTouchListener(){
return new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_UP) {
final Calendar cd = Calendar.getInstance();
Date date = new Date();
cd.setTime(date); DatePickerDialog dp = new DatePickerDialog(
getActivity(),
new OnDateSetListener() {
public void onDateSet(DatePicker view, int year,int monthOfYear, int dayOfMonth) {
String dateStr = "";
if(falg){//年度
dateStr = ""+year;
}else{
dateStr = year+ StrUtil.adjustMonthDay(monthOfYear + 1);
} // 当用户选择完日期之后,进行查询操作
if (PhoneInfo.isConnectInternet(getActivity())) {
etXyLevelDate.setText(dateStr);
//
} else {
UIUtil.raDialog(getActivity(),WR.NET_NOT_CONN);
}
}
},
cd.get(Calendar.YEAR),
cd.get(Calendar.MONTH),
cd.get(Calendar.DAY_OF_MONTH)
);
dp.getDatePicker().setMinDate(DateUtil.getLongDate("2010-01-01"));// 设置选择的最小日期
dp.getDatePicker().setMaxDate(cd.getTime().getTime());// 设置选择的最大日期
dp.show(); // 隐藏
if (dp != null) {
int SDKVersion = PhoneInfo.getSDKVersionNumber();
if (SDKVersion < 11) {
//隐藏日
((ViewGroup) dp.getDatePicker().getChildAt(0)).getChildAt(2).setVisibility(View.GONE);
if(falg){//年度
//隐藏月
((ViewGroup) dp.getDatePicker().getChildAt(0)).getChildAt(1).setVisibility(View.GONE);
}
} else if (SDKVersion > 14) {
//隐藏日
((ViewGroup) ((ViewGroup) dp.getDatePicker().getChildAt(0)).getChildAt(0)).getChildAt(2).setVisibility(View.GONE);
if(falg){//年度
//隐藏月
((ViewGroup) ((ViewGroup) dp.getDatePicker().getChildAt(0)).getChildAt(0)).getChildAt(1).setVisibility(View.GONE);
}
}
}
etXyLevelDate.setInputType(InputType.TYPE_NULL);
}
return false;
}
};
}

关键在于:

// 隐藏
if (dp != null) {
int SDKVersion = PhoneInfo.getSDKVersionNumber();
if (SDKVersion < 11) {
//隐藏日
((ViewGroup) dp.getDatePicker().getChildAt(0)).getChildAt(2).setVisibility(View.GONE);
if(falg){//年度
//隐藏月
((ViewGroup) dp.getDatePicker().getChildAt(0)).getChildAt(1).setVisibility(View.GONE);
}
} else if (SDKVersion > 14) {
//隐藏日
((ViewGroup) ((ViewGroup) dp.getDatePicker().getChildAt(0)).getChildAt(0)).getChildAt(2).setVisibility(View.GONE);
if(falg){//年度
//隐藏月
((ViewGroup) ((ViewGroup) dp.getDatePicker().getChildAt(0)).getChildAt(0)).getChildAt(1).setVisibility(View.GONE);
}
}
}

0:表示年

1:月

2:日