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:日

你可能感兴趣的:(Datepicker)