DatePickerDialog 控制只选择年月或年或月
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:日