File tree Expand file tree Collapse file tree 3 files changed +24
-0
lines changed
lib/java/com/google/android/material/timepicker Expand file tree Collapse file tree 3 files changed +24
-0
lines changed Original file line number Diff line number Diff line change 3333import android .util .AttributeSet ;
3434import android .view .LayoutInflater ;
3535import android .view .View ;
36+ import android .view .accessibility .AccessibilityEvent ;
3637import android .widget .Checkable ;
3738import android .widget .EditText ;
3839import android .widget .FrameLayout ;
@@ -154,6 +155,14 @@ CharSequence getChipText() {
154155 return chipText ;
155156 }
156157
158+ void requestAccessibilityFocus () {
159+ if (editText .getVisibility () == View .VISIBLE ) {
160+ editText .sendAccessibilityEvent (AccessibilityEvent .TYPE_VIEW_FOCUSED );
161+ } else {
162+ chip .sendAccessibilityEvent (AccessibilityEvent .TYPE_VIEW_FOCUSED );
163+ }
164+ }
165+
157166 private String formatText (CharSequence text ) {
158167 return TimeModel .formatText (getResources (), text );
159168 }
Original file line number Diff line number Diff line change @@ -293,6 +293,7 @@ public final View onCreateView(
293293 TimePickerTextInputPresenter presenter = (TimePickerTextInputPresenter ) activePresenter ;
294294 if (presenter .hasError ()) {
295295 presenter .vibrateAndMaybeBeep (root .getContext ());
296+ presenter .accessibilityFocusOnError ();
296297 return ;
297298 }
298299 }
Original file line number Diff line number Diff line change @@ -280,6 +280,20 @@ void vibrateAndMaybeBeep(@NonNull Context context) {
280280 }
281281 }
282282
283+ void accessibilityFocusOnError () {
284+ if (hourTextInput .hasError ()) {
285+ requestAccessibilityFocusAndAnnounce (hourTextInput , hourLabel );
286+ } else if (minuteTextInput .hasError ()) {
287+ requestAccessibilityFocusAndAnnounce (minuteTextInput , minuteLabel );
288+ }
289+ }
290+
291+ private void requestAccessibilityFocusAndAnnounce (
292+ @ NonNull ChipTextInputComboView viewToFocus , @ NonNull TextView labelToAnnounce ) {
293+ viewToFocus .requestAccessibilityFocus ();
294+ labelToAnnounce .announceForAccessibility (labelToAnnounce .getText ());
295+ }
296+
283297 @ SuppressLint ("MissingPermission" )
284298 private void vibrate (@ NonNull Context context ) {
285299 if (Build .VERSION .SDK_INT < Build .VERSION_CODES .M
You can’t perform that action at this time.
0 commit comments