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

自定义View时 年、月的WheelView 滑动监听不到,日、小时、分钟监听没问题 #1010

Closed VanConsday closed 2 years ago

VanConsday commented 2 years ago

FrameLayout mFrameLayout = findViewById(R.id.frameContainer); private void initPicker() {

    Calendar selectedDate = Calendar.getInstance();

    Calendar startDate = Calendar.getInstance();
    startDate.set(2020, 0, 1, 0, 0);
    int year = Calendar.getInstance().get(Calendar.YEAR);
    int month = Calendar.getInstance().get(Calendar.MONTH);
    int day = Calendar.getInstance().get(Calendar.DAY_OF_MONTH);
    int hour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
    int min = Calendar.getInstance().get(Calendar.MINUTE);
    Calendar endDate = Calendar.getInstance();
    endDate.set(year, month , day, hour, min);

    //时间选择器
    pvTime = new TimePickerBuilder(this, new OnTimeSelectListener() {
        @Override
        public void onTimeSelect(Date date, View v) {//选中事件回调
            Log.i("onTimeSelect", getTime(date));
        }
    })
            .setLayoutRes(R.layout.pickerview_custom_time, new CustomListener() {
                @Override
                public void customLayout(View v) {
                    v.findViewById(R.id.top).setVisibility(View.GONE);
                    final WheelView year = v.findViewById(R.id.year);
                    final WheelView month = v.findViewById(R.id.month);
                    final WheelView day = v.findViewById(R.id.day);
                    final WheelView hour = v.findViewById(R.id.hour);
                    final WheelView min = v.findViewById(R.id.min);
                    delayedPicker(year);
                    delayedPicker(month);
                    delayedPicker(day);
                    delayedPicker(hour);
                    delayedPicker(min);
                }
            })
            //TODO问题解决
      .setTimeSelectChangeListener(new OnTimeSelectChangeListener() {
                @Override
                public void onTimeSelectChanged(Date date) {
                    Log.i("onTimeSelect", getTime(date));
                }
            })
             .setType(new boolean[]{true, true, true, true, true, false})
            //设置空字符串以隐藏单位提示   hide label
            .setLabel("", "", "", "", "", "")
            .setDividerColor(Color.DKGRAY)
            .setContentTextSize(20)
            .setDate(selectedDate)
            .setRangDate(startDate, endDate)
            //非dialog模式下,设置ViewGroup, pickerView将会添加到这个ViewGroup中
            .setDecorView(mFrameLayout)
            .setOutSideColor(0x00000000)
            .setOutSideCancelable(false)

            .build();

    //系统返回键监听屏蔽掉
    pvTime.setKeyBackCancelable(false);

    pvTime.show();

}

private void delayedPicker(final WheelView view) {
    view.setOnItemSelectedListener(new OnItemSelectedListener() {
        @Override
        public void onItemSelected(int index) {
            pvTime.returnData();
        }
    });
}