Fixed
Status Update
Comments
cl...@google.com <cl...@google.com>
ma...@google.com <ma...@google.com> #2
Thanks Alex,
I agree with you; These selection controls should have default 48x48 size at least.
TouchDelegate
support in compose is still yet to be explored (
ae...@google.com <ae...@google.com> #3
I tentatively marked this blocked on
ma...@google.com <ma...@google.com>
ap...@google.com <ap...@google.com> #4
Project: platform/frameworks/support
Branch: androidx-main
commit 171901e7b5dd472f6bdc5352691662a6b4162363
Author: George Mount <mount@google.com>
Date: Tue Aug 10 18:52:23 2021
Give Buttons a minimum touch target size
Fixes: 188906426
Fixes: 188675934
Bug: 171509422
Bug: 128421932
Surface was clipping its semantics and pointer input touch
bounds. Clip regions are now allowing touch events to extend
beyond their clip to accommodate minimum touch target.
Relnote: "Allow clip to extend touch target bounds beyond
the clip region for minimum touch target purposes."
Test: new test for Button
Test: manually checked with accessibility scanner
Change-Id: I43e10218f7a20b5a8190ea838cef8eb8440928d1
M compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/ButtonTest.kt
M compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/draw/GraphicsLayerModifierTest.kt
M compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/pointer/RestrictedSizeTest.kt
M compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/DelegatingLayoutNodeWrapper.kt
M compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/InnerPlaceable.kt
M compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/LayoutNodeWrapper.kt
M compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/PointerInputDelegatingWrapper.kt
M compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/semantics/SemanticsWrapper.kt
https://android-review.googlesource.com/1792408
Branch: androidx-main
commit 171901e7b5dd472f6bdc5352691662a6b4162363
Author: George Mount <mount@google.com>
Date: Tue Aug 10 18:52:23 2021
Give Buttons a minimum touch target size
Fixes: 188906426
Fixes: 188675934
Bug: 171509422
Bug: 128421932
Surface was clipping its semantics and pointer input touch
bounds. Clip regions are now allowing touch events to extend
beyond their clip to accommodate minimum touch target.
Relnote: "Allow clip to extend touch target bounds beyond
the clip region for minimum touch target purposes."
Test: new test for Button
Test: manually checked with accessibility scanner
Change-Id: I43e10218f7a20b5a8190ea838cef8eb8440928d1
M compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/ButtonTest.kt
M compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/draw/GraphicsLayerModifierTest.kt
M compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/input/pointer/RestrictedSizeTest.kt
M compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/DelegatingLayoutNodeWrapper.kt
M compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/InnerPlaceable.kt
M compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/LayoutNodeWrapper.kt
M compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/PointerInputDelegatingWrapper.kt
M compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/semantics/SemanticsWrapper.kt
lp...@google.com <lp...@google.com>
ap...@google.com <ap...@google.com> #5
Project: platform/frameworks/support
Branch: androidx-main
commit 79a0ebdf1686b21442e55cbe4fc0b160207c30e6
Author: Louis Pullen-Freilich <lpf@google.com>
Date: Mon Sep 06 21:33:07 2021
Updates Material components to have a minimum touch target size
Button, Slider, Checkbox, RadioButton, and Switch have a visual size smaller than the minimum touch target size of 48x48dp. This means that even with the recent touch target expansion work, in many cases there will not be enough space for hit testing to expand, meaning that these components are not accessible. This CL adds extra space around these components if they are smaller than 48x48, to make sure that there will be enough size for the expanded hit testing to work, ensuring that these components have an accessible touch target.
Also updates Snackbar and AlertDialog to account for the new larger size of buttons in their layout implementation.
Bug: b/149691127
Fixes: b/171509422
Fixes: b/150377503
Fixes: b/174707736
Test: existing tests, new tests
Relnote: "Adds minimum touch target sizing for Material components that do not have an accessible touch target. As this adds extra spacing around components to make sure they have a large enough touch target, this may change existing UIs that assume the size of these components is their visual size, and doesn't account for touch target size. You can use the experimental LocalMinimumTouchTargetEnforcement composition local to disable this behavior across a hierarchy, but this is intended only to be a temporary escape hatch while updating existing UIs to account for the new minimum size."
Change-Id: I9b966a79a290538d8d450aa732b5092760cbece4
M compose/material/material/src/commonMain/kotlin/androidx/compose/material/Checkbox.kt
M compose/material/material/api/current.txt
A compose/material/material/src/commonMain/kotlin/androidx/compose/material/TouchTarget.kt
M compose/material/material/api/restricted_current.txt
M compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/SnackbarTest.kt
M compose/material/material/src/commonMain/kotlin/androidx/compose/material/Snackbar.kt
M compose/material/material/src/commonMain/kotlin/androidx/compose/material/Slider.kt
M compose/material/material/api/public_plus_experimental_current.txt
M compose/material/material/src/commonMain/kotlin/androidx/compose/material/Switch.kt
M compose/material/material/src/commonMain/kotlin/androidx/compose/material/RadioButton.kt
M compose/ui/ui-inspection/src/androidTest/java/androidx/compose/ui/inspection/inspector/LayoutInspectorTreeTest.kt
M compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/RadioButtonScreenshotTest.kt
M compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/ButtonTest.kt
M compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/RadioButtonTest.kt
M compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/CheckboxTest.kt
M compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/CheckboxScreenshotTest.kt
M compose/material/material/src/commonMain/kotlin/androidx/compose/material/Surface.kt
M compose/material/material/src/androidMain/kotlin/androidx/compose/material/AndroidAlertDialog.android.kt
M compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/SwitchTest.kt
https://android-review.googlesource.com/1818946
Branch: androidx-main
commit 79a0ebdf1686b21442e55cbe4fc0b160207c30e6
Author: Louis Pullen-Freilich <lpf@google.com>
Date: Mon Sep 06 21:33:07 2021
Updates Material components to have a minimum touch target size
Button, Slider, Checkbox, RadioButton, and Switch have a visual size smaller than the minimum touch target size of 48x48dp. This means that even with the recent touch target expansion work, in many cases there will not be enough space for hit testing to expand, meaning that these components are not accessible. This CL adds extra space around these components if they are smaller than 48x48, to make sure that there will be enough size for the expanded hit testing to work, ensuring that these components have an accessible touch target.
Also updates Snackbar and AlertDialog to account for the new larger size of buttons in their layout implementation.
Bug:
Fixes:
Fixes:
Fixes:
Test: existing tests, new tests
Relnote: "Adds minimum touch target sizing for Material components that do not have an accessible touch target. As this adds extra spacing around components to make sure they have a large enough touch target, this may change existing UIs that assume the size of these components is their visual size, and doesn't account for touch target size. You can use the experimental LocalMinimumTouchTargetEnforcement composition local to disable this behavior across a hierarchy, but this is intended only to be a temporary escape hatch while updating existing UIs to account for the new minimum size."
Change-Id: I9b966a79a290538d8d450aa732b5092760cbece4
M compose/material/material/src/commonMain/kotlin/androidx/compose/material/Checkbox.kt
M compose/material/material/api/current.txt
A compose/material/material/src/commonMain/kotlin/androidx/compose/material/TouchTarget.kt
M compose/material/material/api/restricted_current.txt
M compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/SnackbarTest.kt
M compose/material/material/src/commonMain/kotlin/androidx/compose/material/Snackbar.kt
M compose/material/material/src/commonMain/kotlin/androidx/compose/material/Slider.kt
M compose/material/material/api/public_plus_experimental_current.txt
M compose/material/material/src/commonMain/kotlin/androidx/compose/material/Switch.kt
M compose/material/material/src/commonMain/kotlin/androidx/compose/material/RadioButton.kt
M compose/ui/ui-inspection/src/androidTest/java/androidx/compose/ui/inspection/inspector/LayoutInspectorTreeTest.kt
M compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/RadioButtonScreenshotTest.kt
M compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/ButtonTest.kt
M compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/RadioButtonTest.kt
M compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/CheckboxTest.kt
M compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/CheckboxScreenshotTest.kt
M compose/material/material/src/commonMain/kotlin/androidx/compose/material/Surface.kt
M compose/material/material/src/androidMain/kotlin/androidx/compose/material/AndroidAlertDialog.android.kt
M compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/SwitchTest.kt
Description
It seems like these are all designed to be used as standalone components (given that all have onClick arguments and Switch can be swiped for example). But all of them have tap targets that are less than 48dp (given that their physical size is smaller than that).
Should their size be increased to account for this?
Or maybe there an equivalent to TouchDelegate that could be used to expand the tap target size?
Otherwise it seems odd that these components have
onClick
arguments, since I think that may discourage people from implementing accessible tap targets properly.