последняя дата месяца, не отображаемая в DatePickerDialog - PullRequest
1 голос
/ 03 октября 2019

Я использую DatePickerDialog, чтобы выбрать дату. Когда месяц начинается с последнего дня недели и имеет 31 день, он не отображает последний день этого месяца. Например, декабрь 2019 года начинается в воскресенье, даты 30 и 31 не отображаются.

Я пытался установить datepickerdialog.setFirstDayOfWeek(Calender.SUNDAY). Эта проблема не изменится и для месяцев, начинающихся с субботы.

dpd = DatePickerDialog.newInstance(
                    JobAssignedActivity.this,
                    now.get(Calendar.YEAR),
                    now.get(Calendar.MONTH),
                    now.get(Calendar.DAY_OF_MONTH)
            );


            Calendar minDate = Calendar.getInstance();
 dpd.setMinDate(minDate);
            dpd.setFirstDayOfWeek(Calendar.SUNDAY);
            dpd.setAccentColor(ContextCompat.getColor(this, R.color.mdtp_accent_color));
            dpd.show(getFragmentManager(), "Datepickerdialog");

Как отобразить последнюю строку месяца? enter image description here

Ответы [ 3 ]

0 голосов
/ 03 октября 2019

Попробуйте, сначала объявите DatePickerDialog

Calendar Calendar1 = Calendar.getInstance();
DatePickerDialog dpdialog = new DatePickerDialog(JobAssignedActivity.this, date, Calendar1
   .get(Calendar.YEAR), Calendar1.get(Calendar.MONTH),
   Calendar1.get(Calendar.DAY_OF_MONTH));
dpdialog.getDatePicker().setMinDate(new Date().getTime());
dpdialog.show(); //put this whenever you want show the dialog

и добавьте метод прослушивателя даты вне oncreate.

final DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() {

        @Override
        public void onDateSet(DatePicker view, int year, int monthOfYear,
                              int dayOfMonth) {
            // TODO Auto-generated method stub
            Calendar1.set(Calendar.YEAR, year);
            Calendar1.set(Calendar.MONTH, monthOfYear);
            Calendar1.set(Calendar.DAY_OF_MONTH, dayOfMonth);
            updateCalendar1(); //whatever function/method you need after selecting a date
        }

    };

Ваша операция.

private void updateCalendar1() {
        String myFormat = "MM/dd/yyyy";
        SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);

        etdate.setText(sdf.format(Calendar1.getTime()));
    }
0 голосов
/ 04 октября 2019

Если вы используете этот com.wdullaer.materialdatetimepicker дизайн выбора даты, если вы установили версию выбора даты dpd.setVersion(DatePickerDialog.Version.VERSION_1);

0 голосов
/ 03 октября 2019

Попробуйте, это даст правильный вывод

DatePickerDialog.OnDateSetListener onDateSetListener = new DatePickerDialog.OnDateSetListener() {

    @Override
    public void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth) {
        Log.v("onDateSet",dayOfMonth+"/"+(monthOfYear+1)+"/"+year);
    }

};

final Calendar cal = Calendar.getInstance();
new DatePickerDialog(YourActivity.this, onDateSetListener, 
    cal.get(Calendar.YEAR), cal.get(Calendar.MONTH),
    cal.get(Calendar.DAY_OF_MONTH)).show();
...