From aa46f79e828c98e5a544ef1d2def943c1ec94653 Mon Sep 17 00:00:00 2001 From: pubiqq Date: Mon, 3 Feb 2025 21:14:41 +0300 Subject: [PATCH] [DatePicker] Make the month buttons navigate through months, not pages --- .../material/datepicker/MaterialCalendar.java | 28 +++++++------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/lib/java/com/google/android/material/datepicker/MaterialCalendar.java b/lib/java/com/google/android/material/datepicker/MaterialCalendar.java index af9dd80430f..d5055f84b71 100644 --- a/lib/java/com/google/android/material/datepicker/MaterialCalendar.java +++ b/lib/java/com/google/android/material/datepicker/MaterialCalendar.java @@ -587,24 +587,16 @@ public void onClick(View view) { } }); - monthNext.setOnClickListener( - new OnClickListener() { - @Override - public void onClick(View view) { - int currentItem = getLayoutManager().findFirstVisibleItemPosition(); - monthsPagerAdapter.setKeyboardFocusDirection(View.FOCUS_FORWARD); - setCurrentMonth(monthsPagerAdapter.getPageMonth(currentItem + 1)); - } - }); - monthPrev.setOnClickListener( - new OnClickListener() { - @Override - public void onClick(View view) { - int currentItem = getLayoutManager().findLastVisibleItemPosition(); - monthsPagerAdapter.setKeyboardFocusDirection(View.FOCUS_BACKWARD); - setCurrentMonth(monthsPagerAdapter.getPageMonth(currentItem - 1)); - } - }); + monthNext.setOnClickListener(view -> { + monthsPagerAdapter.setKeyboardFocusDirection(View.FOCUS_FORWARD); + Month currentMonth = getCurrentMonth(); + setCurrentMonth(currentMonth.monthsLater(1)); + }); + monthPrev.setOnClickListener(view -> { + monthsPagerAdapter.setKeyboardFocusDirection(View.FOCUS_BACKWARD); + Month currentMonth = getCurrentMonth(); + setCurrentMonth(currentMonth.monthsLater(-1)); + }); int currentMonthPosition = monthsPagerAdapter.getPosition(current); updateNavigationButtonsEnabled(currentMonthPosition);