gzu-liyujiang / AndroidPicker

安卓选择器类库,包括日期及时间选择器(可用于出生日期、营业时间等)、单项选择器(可用于性别、民族、职业、学历、星座等)、二三级联动选择器(可用于车牌号、基金定投日期等)、城市地址选择器(分省级、地市级及区县级)、数字选择器(可用于年龄、身高、体重、温度等)、日历选日期择器(可用于酒店及机票预定日期)、颜色选择器、文件及目录选择器、图片选择器等……WheelPicker/DatePicker/TimePicker/OptionPicker/NumberPicker/LinkagePicker/AddressPicker/CarPlatePicker/CalendarPicker/ColorPicker/FilePicker/ImagePicker etc.
Other
6.47k stars 1.47k forks source link

时间选择器的默认值怎么修改 #256

Open pzb001025 opened 3 years ago

liyujiang-gzu commented 3 years ago

picker.getWheelLayout().setDefaultValue(...)

liyujiang-gzu commented 3 years ago

picker.setDefaultValue(...)

参见demo:

        TimePicker picker = new TimePicker(this);
        picker.setBodyWidth(140);
        picker.setOnTimeMeridiemPickedListener(new OnTimeMeridiemPickedListener() {
            @Override
            public void onTimePicked(int hour, int minute, int second, boolean isAnteMeridiem) {
                String text = hour + ":" + minute + ":" + second;
                text += isAnteMeridiem ? " 上午" : " 下午";
                Toast.makeText(getApplication(), text, Toast.LENGTH_SHORT).show();
            }
        });
        TimeWheelLayout wheelLayout = picker.getWheelLayout();
        wheelLayout.setRange(TimeEntity.target(1, 0, 0), TimeEntity.target(12, 59, 59));
        wheelLayout.setTimeMode(TimeMode.HOUR_12_NO_SECOND);
        wheelLayout.setTimeLabel(":", " ", "");
        wheelLayout.setDefaultValue(TimeEntity.now());
        picker.show();
pzb001025 commented 3 years ago

是不能这样修改吗 TimeEntity target = TimeEntity.target(1, 9, 0); picker.getWheelLayout().setDefaultValue(target);

    java.lang.IllegalArgumentException: The default time is out of range
liyujiang-gzu commented 3 years ago

是不能这样修改吗 TimeEntity target = TimeEntity.target(1, 9, 0); picker.getWheelLayout().setDefaultValue(target);

    java.lang.IllegalArgumentException: The default time is out of range

默认值要在开始和结束的时间范围内,建议同时设置wheelLayout.setRange(....);

liyujiang-gzu commented 3 years ago

是不能这样修改吗 TimeEntity target = TimeEntity.target(1, 9, 0); picker.getWheelLayout().setDefaultValue(target);

    java.lang.IllegalArgumentException: The default time is out of range

默认值要在开始和结束的时间范围内,建议同时设置wheelLayout.setRange(....);

最新版本已经不抛出这个异常了,默认值范围越界的话使用结束时间

pzb001025 commented 3 years ago

3.0.8不是最新的吗

pzb001025 commented 3 years ago

TimeEntity target = TimeEntity.target(9, 9, 9); picker.getWheelLayout().setDefaultValue(target);

这样的话除了最后一个 正常 其他的都是1到24

pzb001025 commented 3 years ago

是不能这样修改吗 TimeEntity target = TimeEntity.target(1, 9, 0); picker.getWheelLayout().setDefaultValue(target);

    java.lang.IllegalArgumentException: The default time is out of range

默认值要在开始和结束的时间范围内,建议同时设置wheelLayout.setRange(....);

最新版本已经不抛出这个异常了,默认值范围越界的话使用结束时间

TimeEntity target = TimeEntity.target(9, 9, 9); picker.getWheelLayout().setDefaultValue(target);

这样的话除了最后一个 正常 其他的都是1到24

liyujiang-gzu commented 3 years ago

TimeEntity target = TimeEntity.target(9, 9, 9); picker.getWheelLayout().setDefaultValue(target);

这样的话除了最后一个 正常 其他的都是1到24

你设置的范围是多少?

pzb001025 commented 3 years ago

TimeEntity target = TimeEntity.target(9, 9, 9); picker.getWheelLayout().setDefaultValue(target); 这样的话除了最后一个 正常 其他的都是1到24

你设置的范围是多少?

我想设置1-9的值

liyujiang-gzu commented 3 years ago

TimeEntity target = TimeEntity.target(9, 9, 9); picker.getWheelLayout().setDefaultValue(target); 这样的话除了最后一个 正常 其他的都是1到24

你设置的范围是多少?

我想设置1-9的值

设置范围用setRange,设置默认选中项用setDefaultValue。还没明白你要达到什么效果,设置1-9的小时范围值可以用TimeWheelLayout wheelLayout = picker.getWheelLayout();wheelLayout.setRange(TimeEntity.target(1, 0, 0), TimeEntity.target(9, 59, 59));

pzb1834 commented 3 years ago

TimeEntity target = TimeEntity.target(9, 9, 9); picker.getWheelLayout().setDefaultValue(target); 这样的话除了最后一个 正常 其他的都是1到24

你设置的范围是多少?

我想设置1-9的值

设置范围用setRange,设置默认选中项用setDefaultValue。还没明白你要达到什么效果,设置1-9的小时范围值可以用TimeWheelLayout wheelLayout = picker.getWheelLayout();wheelLayout.setRange(TimeEntity.target(1, 0, 0), TimeEntity.target(9, 59, 59));

我的意思就是1-9小时 分钟也是1-9后面的单位我给改掉了 NumberPicker可以这样实现吗就是二级联动

liyujiang-gzu commented 3 years ago

二级联动

NumberPicker只是一级。二级联动可以继承自LinkagePicker自定义,或者直接用两个NumberWheelView从头写