Merge "CheckableRelativeLayout accessibility checked state updates" into main

This commit is contained in:
Yinglei Wang
2025-02-27 13:27:56 -08:00
committed by Android (Google) Code Review

View File

@@ -16,6 +16,8 @@
package com.android.settings.widget; package com.android.settings.widget;
import static android.view.accessibility.Flags.triStateChecked;
import android.content.Context; import android.content.Context;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.View; import android.view.View;
@@ -90,10 +92,16 @@ public class CheckableRelativeLayout extends RelativeLayout implements Checkable
if (mCheckable != null) { if (mCheckable != null) {
mCheckable.setChecked(checked); mCheckable.setChecked(checked);
} }
if (triStateChecked()) {
notifyViewAccessibilityStateChangedIfNeeded(
AccessibilityEvent.CONTENT_CHANGE_TYPE_CHECKED);
}
} }
setStateDescriptionIfNeeded(); setStateDescriptionIfNeeded();
notifyViewAccessibilityStateChangedIfNeeded( if (!triStateChecked()) {
AccessibilityEvent.CONTENT_CHANGE_TYPE_UNDEFINED); notifyViewAccessibilityStateChangedIfNeeded(
AccessibilityEvent.CONTENT_CHANGE_TYPE_UNDEFINED);
}
} }
private void setStateDescriptionIfNeeded() { private void setStateDescriptionIfNeeded() {
@@ -122,6 +130,11 @@ public class CheckableRelativeLayout extends RelativeLayout implements Checkable
@Override @Override
public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
super.onInitializeAccessibilityNodeInfo(info); super.onInitializeAccessibilityNodeInfo(info);
info.setChecked(mChecked); if (triStateChecked()) {
info.setChecked(mChecked ? AccessibilityNodeInfo.CHECKED_STATE_TRUE :
AccessibilityNodeInfo.CHECKED_STATE_FALSE);
} else {
info.setChecked(mChecked);
}
} }
} }