diff --git a/src/com/android/settings/password/ChooseLockPassword.java b/src/com/android/settings/password/ChooseLockPassword.java index 80f73b95c66..def98bac020 100644 --- a/src/com/android/settings/password/ChooseLockPassword.java +++ b/src/com/android/settings/password/ChooseLockPassword.java @@ -560,6 +560,7 @@ public class ChooseLockPassword extends SettingsActivity { setupPasswordRequirementsView(headerLayout); mPasswordRestrictionView.setLayoutManager(new LinearLayoutManager(getActivity())); + mPasswordRestrictionView.setAccessibilityLiveRegion(ACCESSIBILITY_LIVE_REGION_POLITE); mPasswordEntry = view.findViewById(R.id.password_entry); mPasswordEntry.setOnEditorActionListener(this); mPasswordEntry.addTextChangedListener(this); diff --git a/src/com/android/settings/password/PasswordRequirementAdapter.java b/src/com/android/settings/password/PasswordRequirementAdapter.java index b17f86481df..157a716ce9a 100644 --- a/src/com/android/settings/password/PasswordRequirementAdapter.java +++ b/src/com/android/settings/password/PasswordRequirementAdapter.java @@ -20,9 +20,9 @@ import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.view.accessibility.AccessibilityNodeInfo; import android.widget.TextView; -import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import com.android.settings.R; @@ -66,15 +66,20 @@ public class PasswordRequirementAdapter extends return mRequirements[position].hashCode(); } - @Override - public void onViewAttachedToWindow(@NonNull PasswordRequirementViewHolder holder) { - holder.mDescriptionText.announceForAccessibility(holder.mDescriptionText.getText()); - } - @Override public void onBindViewHolder(PasswordRequirementViewHolder holder, int position) { final int fontSize = mContext.getResources().getDimensionPixelSize( R.dimen.password_requirement_font_size); + + final String requirement = mRequirements[position]; + holder.mDescriptionText.setAccessibilityDelegate(new View.AccessibilityDelegate() { + @Override + public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) { + super.onInitializeAccessibilityNodeInfo(host, info); + holder.mDescriptionText.setStateDescription(requirement); + } + }); + holder.mDescriptionText.setText(mRequirements[position]); if (mIsTooShortError) { holder.mDescriptionText.setTextAppearance(R.style.ScreenLockPasswordHintTextFontStyle);