日历左,右键单击箭头的月份启用和禁用基于某些日期在Android

hwazgwia  于 2023-06-20  发布在  Android
关注(0)|答案(2)|浏览(106)

我有一个日历代码,在页面的顶部,我们有两个年份提到。左边是上一年,右边是当前年。因此,一旦用户打开日历,当前年、日期和月份就会默认显示在日历上。对于日历,两边的左箭头和右箭头都有去下一个月和上一个月。
例如:如果我们有2017年和2018年,根据要求,如果用户选择2017年1月,则应禁用向左箭头。如果用户点击向右箭头,则用户应该能够转到2017年12月,之后,向右箭头应该被禁用。然后,当用户单击2018并移动到2018年1月时,应禁用向左箭头。再次,该月的右箭头应仅启用到当前月份。我尝试了不同的方式,但无法禁用点击到某个月。

//next arrow click for showing next month
nextMonth.setOnClickListener(new View.OnClickListener() {
 @Override
  public void onClick(View v) {

   if (month > 11) {//checking the month
     month = 1;
     year++;
   } else {
   month++;
   }
   setGridCellAdapterToDate(month, year);
   }
   });

//prev arrow click to show prev month
    prevMonth.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

    if (month <= 1) {//checking the month
        month = 12;
        year--;
    } else {
    month--;
    }

    setGridCellAdapterToDate(month, year);
                        }
   });

任何帮助都将真的感激不尽

xzlaal3s

xzlaal3s1#

使用以下代码更新calendarMy对象中的当前时间,并检查当前月份和年份

Calendar calendar = Calendar.getInstance();
Calendar calendarMy = Calendar.getInstance();

nextMonth.setOnClickListener(new View.OnClickListener() {
 @Override
  public void onClick(View v) {

   if (month > 11) {//checking the month
     month = 1;
     year++;
   } else {
   month++;
   }

   //update current time
    calendarMy.set(Calendar.MONTH,month);
    calendarMy.set(Calendar.YEAR,year);

    disableButton();

   setGridCellAdapterToDate(month, year);
   }
   });

//prev arrow click to show prev month
    prevMonth.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

    if (month <= 1) {//checking the month
        month = 12;
        year--;
    } else {
    month--;
    }

    //update current time
     calendarMy.set(Calendar.MONTH,month);
    calendarMy.set(Calendar.YEAR,year);

    disableButton();

    setGridCellAdapterToDate(month, year);
                        }
   });

这里我增加了两个条件,分别是检查去年的第一个月和运行年的当前月份

public void disableButton()
   {

   // condition for checking first month of last year
     if (calendar.get(Calendar.YEAR) != (calendarMy.get(Calendar.YEAR)) && calendarMy.get(Calendar.MONTH) == 0) {
            //disable left button
        }
        // condition for checking current month
        else if (calendarMy.get(Calendar.YEAR) == (calendarMy.get(Calendar.YEAR)) && calendar.get(Calendar.MONTH) == calendarMy.get(Calendar.MONTH)) {

            //disable right button
        }else{
        // enable both button
        }

   }
kuarbcqp

kuarbcqp2#

仅通过myCalendar.get(Calendar.MONTH)中的开始月份

DatePickerDialog dpd = new DatePickerDialog(ActivityNewGroup.this, date,
                            myCalendar.get(Calendar.YEAR),
                            myCalendar.get(Calendar.MONTH),
                            myCalendar.get(Calendar.DAY_OF_MONTH));
                    dpd.getDatePicker().setMinDate(System.currentTimeMillis());

相关问题