Bigkoo / Android-PickerView

This is a picker view for android , support linkage effect, timepicker and optionspicker.(时间选择器、省市区三级联动)
Apache License 2.0
13.42k stars 3.44k forks source link

设置时间限制 setRangDate和当前选择是时间pvTime.setDate导致选中月份日期出错。 #855

Open adazhdw opened 4 years ago

adazhdw commented 4 years ago
if (TextUtils.isEmpty(selectTime))
             pvTime.setDate(Calendar.getInstance());//设置选中时间
            else{
                try {
                    Date date = getFormat().parse(selectTime);
                    Calendar calendar = Calendar.getInstance();
                    calendar.setTime(date);
                    pvTime.setDate(calendar);
                } catch (ParseException e) {
                    e.printStackTrace();
                }
            }
            /* pvTime.show(); //show timePicker*/
            pvTime.show(v);//弹出时间选择器,传递参数过去,回调的时候则可以绑定此view

pvTime = new TimePickerBuilder(this, new OnTimeSelectListener() {
            @Override
            public void onTimeSelect(Date date, View v) {
                selectTime = getTime(date);
                Toast.makeText(MainActivity.this, selectTime, Toast.LENGTH_SHORT).show();
                Log.i("pvTime", "onTimeSelect");

            }
        })
                .setRangDate(Calendar.getInstance(),calendar)//设置时间范围限制
                .setTimeSelectChangeListener(new OnTimeSelectChangeListener() {
                    @Override
                    public void onTimeSelectChanged(Date date) {
                        Log.i("pvTime", "onTimeSelectChanged");
                    }
                })
                .setType(new boolean[]{true, true, true, true, true, true})
                .isDialog(true) //默认设置false ,内部实现将DecorView 作为它的父控件。
                .addOnCancelClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        Log.i("pvTime", "onCancelClickListener");
                    }
                })
                .setItemVisibleCount(5) //若设置偶数,实际值会加1(比如设置6,则最大可见条目为7)
                .setLineSpacingMultiplier(2.0f)
                .isAlphaGradient(true)
                .build();

两个限制情况会导致选中时间当前月份的日期少掉一部分。 举个栗子:今天是2020-01-14 ,我选了2020-02-02的时间,下次设置选中时间显示dialog,2月份的时间14号之前的就不显了,显示的是1月份的。而且选中的时候也是从1号开始。也就是 14号代表1号,15号代表2号,这样的。

K-Kiko commented 4 years ago

+1 貌似4.1.8及以下没有这个问题