zoukankan      html  css  js  c++  java
  • 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:日

  • 相关阅读:
    Spring Security简单的登陆验证授权
    汽车之家汽车品牌Logo信息抓取 DotnetSpider实战[三]
    汽车之家店铺商品详情数据抓取 DotnetSpider实战[二]
    如何解决 MySQL报错:ERROR 1045 (28000)
    linux三剑客grep|sed|awk实践
    VMware中Linux启动时***Host SMBus controller not enabled的解决方法
    selenium初探:WebDriverException解决方法探索(以Chrome浏览器|IE浏览器|Edge浏览器为例)
    Windows10 64位 Python2.7 Matplotlib安装
    关于 水平制表符 Horizontal Tab (TAB)
    leetcode每日解题思路 221 Maximal Square
  • 原文地址:https://www.cnblogs.com/yshyee/p/4361822.html
Copyright © 2011-2022 走看看