Disable specific dates of day in Android date picker

前端 未结 5 1531
日久生厌
日久生厌 2020-12-06 05:06

I\'m using the datePicker and I can disable last days of today and later days after 30 days by the following code:

DatePickerDialog datePicker = new DatePick         


        
5条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-12-06 05:53

    Use custom DatePickerDialog

    add this in build.gradle

    compile 'com.wdullaer:materialdatetimepicker:3.5.1'

    implement

    DatePickerDialog.OnDateSetListener to your class

    and import

    import com.wdullaer.materialdatetimepicker.date.DatePickerDialog; instead of 'import android.app.DatePickerDialog;'

    and add this method

     private void showDatePicker() { 
    
        Calendar calendar = Calendar.getInstance();
    
        DatePickerDialog dpd = DatePickerDialog.newInstance(
                this,
                calendar.get(Calendar.YEAR),
                calendar.get(Calendar.MONTH),
                calendar.get(Calendar.DAY_OF_MONTH)
        );
        dpd.show(getActivity().getFragmentManager(), "DatePickerDialog");
    
        SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
        String a = "07-03-2018"; // example
    
        java.util.Date date = null;
    
        try {
            date = sdf.parse(a);
        } catch (ParseException e) {
            e.printStackTrace();
        }
    
        calendar = dateToCalendar(date);
        System.out.println(calendar.getTime());
    
        List dates = new ArrayList<>();
        dates.add(calendar);
        Calendar[] disabledDays1 = dates.toArray(new Calendar[dates.size()]);
        dpd.setDisabledDays(disabledDays1);
    
    }
    
        private Calendar dateToCalendar(Date date) {
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            return calendar;
        }
    
    
    
    
    @Override
    public void onDateSet(DatePickerDialog view, int year, int monthOfYear, int dayOfMonth) {
    
        String date = dayOfMonth+"/"+(monthOfYear+1)+"/"+year;
        textview.setText(date);
    
    }
    

    call showDatePicker().

    for multiple days

    Change this

         String[] holidays = {"07-03-2018","05-03-2018","10-03-2018"};
    
        java.util.Date date = null;
    
        for (int i = 0;i < holidays.length; i++) {
    
            try {
                date = sdf.parse(holidays[i]);
            } catch (ParseException e) {
                e.printStackTrace();
            }
    
            calendar = dateToCalendar(date);
            System.out.println(calendar.getTime());
    
            List dates = new ArrayList<>();
            dates.add(calendar);
            Calendar[] disabledDays1 = dates.toArray(new Calendar[dates.size()]);
            dpd.setDisabledDays(disabledDays1);
        }
    

提交回复
热议问题