diff --git a/lib/java/com/google/android/material/datepicker/MaterialCalendar.java b/lib/java/com/google/android/material/datepicker/MaterialCalendar.java index 9e7d677f9..809677c83 100644 --- a/lib/java/com/google/android/material/datepicker/MaterialCalendar.java +++ b/lib/java/com/google/android/material/datepicker/MaterialCalendar.java @@ -245,9 +245,23 @@ public final class MaterialCalendar extends PickerFragment { new PagerSnapHelper().attachToRecyclerView(recyclerView); } recyclerView.scrollToPosition(monthsPagerAdapter.getPosition(current)); + setUpForAccessibility(); return root; } + private void setUpForAccessibility() { + ViewCompat.setAccessibilityDelegate( + recyclerView, + new AccessibilityDelegateCompat() { + @Override + public void onInitializeAccessibilityNodeInfo( + View view, @NonNull AccessibilityNodeInfoCompat accessibilityNodeInfoCompat) { + super.onInitializeAccessibilityNodeInfo(view, accessibilityNodeInfoCompat); + accessibilityNodeInfoCompat.setScrollable(false); + } + }); + } + @NonNull private ItemDecoration createItemDecoration() { return new ItemDecoration() { diff --git a/tests/javatests/com/google/android/material/datepicker/MaterialDatePickerPagesTest.java b/tests/javatests/com/google/android/material/datepicker/MaterialDatePickerPagesTest.java index 944eb1444..0db0a612e 100644 --- a/tests/javatests/com/google/android/material/datepicker/MaterialDatePickerPagesTest.java +++ b/tests/javatests/com/google/android/material/datepicker/MaterialDatePickerPagesTest.java @@ -18,11 +18,15 @@ package com.google.android.material.datepicker; import static com.google.android.material.datepicker.MaterialDatePickerTestUtils.findFirstVisibleItem; import static org.hamcrest.Matchers.lessThan; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertThat; import androidx.fragment.app.FragmentManager; import androidx.appcompat.app.AppCompatActivity; +import android.view.View; import androidx.arch.core.executor.testing.InstantTaskExecutorRule; +import androidx.core.view.ViewCompat; +import androidx.core.view.accessibility.AccessibilityNodeInfoCompat; import androidx.test.espresso.IdlingRegistry; import androidx.test.platform.app.InstrumentationRegistry; import androidx.test.rule.ActivityTestRule; @@ -128,4 +132,13 @@ public class MaterialDatePickerPagesTest { MaterialDatePickerTestUtils.clickSelectorToggle(); assertEquals(findFirstVisibleItem(dialogFragment), OPEN_AT.monthsLater(1)); } + + @Test + public void accessibility_daySelection_notScrollable() { + View view = dialogFragment.getView().findViewById(R.id.mtrl_calendar_months); + AccessibilityNodeInfoCompat nodeInfo = AccessibilityNodeInfoCompat.obtain(); + ViewCompat.onInitializeAccessibilityNodeInfo(view, nodeInfo); + + assertFalse(nodeInfo.isScrollable()); + } }