Merge "Add accessibility expand/collapse action to node info"

This commit is contained in:
Zeyin Wu
2022-08-23 21:21:53 +00:00
committed by Android (Google) Code Review

View File

@@ -31,6 +31,7 @@ import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.SoundEffectConstants;
import android.view.View;
import android.view.accessibility.AccessibilityNodeInfo;
import android.widget.ExpandableListConnector.PositionMetadata;
import com.android.internal.R;
@@ -1144,6 +1145,24 @@ public class ExpandableListView extends ListView {
return new ExpandableListContextMenuInfo(view, packedPosition, id);
}
/** @hide */
@Override
public void onInitializeAccessibilityNodeInfoForItem(
View view, int position, AccessibilityNodeInfo info) {
super.onInitializeAccessibilityNodeInfoForItem(view, position, info);
final PositionMetadata metadata = mConnector.getUnflattenedPos(position);
if (metadata.position.type == ExpandableListPosition.GROUP) {
if (isGroupExpanded(metadata.position.groupPos)) {
info.addAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_COLLAPSE);
} else {
info.addAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_EXPAND);
}
}
metadata.recycle();
}
/**
* Gets the ID of the group or child at the given <code>position</code>.
* This is useful since there is no ListAdapter ID -> ExpandableListAdapter