mirror of
https://github.com/material-components/material-components-android.git
synced 2026-02-20 08:39:55 +08:00
[MaterialDatePicker][a11y] Improve TalkBack focus order when selecting a day
Make RecyclerView non-scrollable to allow focusing away from it instead of paginating to previous/next month. PiperOrigin-RevId: 486936286
This commit is contained in:
parent
45a569f858
commit
dff70c062d
@ -245,9 +245,23 @@ public final class MaterialCalendar<S> extends PickerFragment<S> {
|
||||
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() {
|
||||
|
||||
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user