AndroidPicker icon indicating copy to clipboard operation
AndroidPicker copied to clipboard

时间选择器怎么添加至今选项?

Open wzq2333 opened this issue 4 years ago • 4 comments
trafficstars

求解!!

wzq2333 avatar Jul 13 '21 07:07 wzq2333

求解!!

picker.getWheelLayout().setDateFormatter()/picker.getWheelLayout().setTimeFormatter()也许可以,判断是今天的日子就返回“至今”

liyujiang-gzu avatar Jul 14 '21 01:07 liyujiang-gzu

这种效果差不多是可以实现的,如下:

  • image
  • image
  • image
        DatePicker picker = new DatePicker(this);
        picker.setBodyWidth(240);
        picker.setOnDatePickedListener(this);
        DateWheelLayout wheelLayout = picker.getWheelLayout();
        wheelLayout.setDateMode(DateMode.YEAR_MONTH);
        final DateEntity maxDate = DateEntity.dayOnFuture(1);
        wheelLayout.setRange(DateEntity.target(1990, 1, 1), maxDate);
        wheelLayout.setDateFormatter(new DateFormatter() {
            @Override
            public String formatYear(int year) {
                if (year == maxDate.getYear()) {
                    return "至今";
                }
                return year + "年";
            }

            @Override
            public String formatMonth(int month) {
                if (wheelLayout.getSelectedYear() == maxDate.getYear()) {
                    return "";
                }
                return month + "月";
            }

            @Override
            public String formatDay(int day) {
                return "";
            }
        });
        picker.show();
        DatePicker picker = new DatePicker(this);
        picker.setBodyWidth(240);
        picker.setOnDatePickedListener(this);
        DateWheelLayout wheelLayout = picker.getWheelLayout();
        wheelLayout.setDateMode(DateMode.YEAR_MONTH);
        final DateEntity maxDate = DateEntity.monthOnFuture(1);
        wheelLayout.setRange(DateEntity.target(1990, 1, 1), maxDate);
        wheelLayout.setDateFormatter(new DateFormatter() {
            @Override
            public String formatYear(int year) {
                return year + "年";
            }

            @Override
            public String formatMonth(int month) {
                if (wheelLayout.getSelectedYear() == maxDate.getYear() && month == maxDate.getMonth()) {
                    return "至今";
                }
                return month + "月";
            }

            @Override
            public String formatDay(int day) {
                return "";
            }
        });
        picker.show();

liyujiang-gzu avatar Jul 14 '21 02:07 liyujiang-gzu

多谢多谢!!

wzq2333 avatar Jul 14 '21 02:07 wzq2333

多谢多谢!!

局限性还是太大了,最好是参照DatePicker继承自LinkagePicker重新自定义一个时间选择器

liyujiang-gzu avatar Jul 14 '21 02:07 liyujiang-gzu