diff --git a/lib/java/com/google/android/material/search/SearchView.java b/lib/java/com/google/android/material/search/SearchView.java index b8e28686093..3a065c5ace8 100644 --- a/lib/java/com/google/android/material/search/SearchView.java +++ b/lib/java/com/google/android/material/search/SearchView.java @@ -790,10 +790,23 @@ public TransitionState getCurrentTransitionState() { } void setTransitionState(@NonNull TransitionState state) { + setTransitionState(state, /* updateModalForAccessibility= */ true); + } + + private void setTransitionState( + @NonNull TransitionState state, boolean updateModalForAccessibility) { if (currentTransitionState.equals(state)) { return; } + if (updateModalForAccessibility) { + if (state == TransitionState.SHOWN) { + setModalForAccessibility(true); + } else if (state == TransitionState.HIDDEN) { + setModalForAccessibility(false); + } + } + TransitionState previousState = currentTransitionState; currentTransitionState = state; Set listeners = new LinkedHashSet<>(transitionListeners); @@ -830,7 +843,6 @@ public void show() { return; } searchViewAnimationHelper.show(); - setModalForAccessibility(true); } /** @@ -845,7 +857,6 @@ public void hide() { return; } searchViewAnimationHelper.hide(); - setModalForAccessibility(false); } /** Updates the visibility of the {@link SearchView} without an animation. */ @@ -853,10 +864,9 @@ public void setVisible(boolean visible) { boolean wasVisible = rootView.getVisibility() == VISIBLE; rootView.setVisibility(visible ? VISIBLE : GONE); updateNavigationIconProgressIfNeeded(); - if (wasVisible != visible) { - setModalForAccessibility(visible); - } - setTransitionState(visible ? TransitionState.SHOWN : TransitionState.HIDDEN); + setTransitionState( + visible ? TransitionState.SHOWN : TransitionState.HIDDEN, + /* updateModalForAccessibility= */ wasVisible != visible); } private void updateNavigationIconProgressIfNeeded() {