Fix talkback when expand and collapse the permission list
1. Announce expand/collapse when double tap the permission item 2. Announce expanded/collapsed when single tap the permission item Test: cts Fix: 278486577, 278638141 Change-Id: Ia9b00a555a543aae6746bf12cf8b2d131f0c5aea
This commit is contained in:
@@ -113,6 +113,18 @@
|
||||
<!-- Back button for the helper consent dialog [CHAR LIMIT=30] -->
|
||||
<string name="consent_back">Back</string>
|
||||
|
||||
<!-- Action when permission list view is expanded CHAR LIMIT=30] -->
|
||||
<string name="permission_expanded">Expanded</string>
|
||||
|
||||
<!-- Expand action permission list CHAR LIMIT=30] -->
|
||||
<string name="permission_expand">Expand</string>
|
||||
|
||||
<!-- Action when permission list view is collapsed CHAR LIMIT=30] -->
|
||||
<string name="permission_collapsed">Collapsed</string>
|
||||
|
||||
<!-- Collapse action permission list CHAR LIMIT=30] -->
|
||||
<string name="permission_collapse">Collapse</string>
|
||||
|
||||
<!-- ================== System data transfer ==================== -->
|
||||
<!-- Title of the permission sync confirmation dialog. [CHAR LIMIT=NONE] -->
|
||||
<string name="permission_sync_confirmation_title">Give apps on <strong><xliff:g id="companion_device_name" example="Galaxy Watch 5">%1$s</xliff:g></strong> the same permissions as on <strong><xliff:g id="primary_device_name" example="Pixel 6">%2$s</xliff:g></strong>?</string>
|
||||
|
||||
@@ -27,6 +27,7 @@ import android.util.ArrayMap;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.accessibility.AccessibilityNodeInfo;
|
||||
import android.widget.ImageButton;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
@@ -121,6 +122,10 @@ class PermissionListAdapter extends RecyclerView.Adapter<PermissionListAdapter.V
|
||||
if (viewHolder.mExpandButton.getTag() == null) {
|
||||
viewHolder.mExpandButton.setTag(R.drawable.btn_expand_more);
|
||||
}
|
||||
|
||||
setAccessibility(view, viewType,
|
||||
AccessibilityNodeInfo.ACTION_CLICK, R.string.permission_expand);
|
||||
|
||||
// Add expand buttons if the permissions are more than PERMISSION_SIZE in this list also
|
||||
// make the summary invisible by default.
|
||||
if (mPermissions.size() > PERMISSION_SIZE) {
|
||||
@@ -132,10 +137,18 @@ class PermissionListAdapter extends RecyclerView.Adapter<PermissionListAdapter.V
|
||||
viewHolder.mExpandButton.setImageResource(R.drawable.btn_expand_less);
|
||||
viewHolder.mPermissionSummary.setVisibility(View.VISIBLE);
|
||||
viewHolder.mExpandButton.setTag(R.drawable.btn_expand_less);
|
||||
view.setContentDescription(mContext.getString(R.string.permission_expanded));
|
||||
setAccessibility(view, viewType,
|
||||
AccessibilityNodeInfo.ACTION_CLICK, R.string.permission_collapse);
|
||||
viewHolder.mPermissionSummary.setFocusable(true);
|
||||
} else {
|
||||
viewHolder.mExpandButton.setImageResource(R.drawable.btn_expand_more);
|
||||
viewHolder.mPermissionSummary.setVisibility(View.GONE);
|
||||
viewHolder.mExpandButton.setTag(R.drawable.btn_expand_more);
|
||||
view.setContentDescription(mContext.getString(R.string.permission_collapsed));
|
||||
setAccessibility(view, viewType,
|
||||
AccessibilityNodeInfo.ACTION_CLICK, R.string.permission_expanded);
|
||||
viewHolder.mPermissionSummary.setFocusable(false);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
@@ -187,6 +200,18 @@ class PermissionListAdapter extends RecyclerView.Adapter<PermissionListAdapter.V
|
||||
}
|
||||
}
|
||||
|
||||
private void setAccessibility(View view, int viewType, int action, int resourceId) {
|
||||
final String actionString = mContext.getString(resourceId);
|
||||
final String permission = mContext.getString(sTitleMap.get(viewType));
|
||||
view.setAccessibilityDelegate(new View.AccessibilityDelegate() {
|
||||
public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) {
|
||||
super.onInitializeAccessibilityNodeInfo(host, info);
|
||||
info.addAction(new AccessibilityNodeInfo.AccessibilityAction(action,
|
||||
actionString + permission));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void setPermissionType(List<Integer> permissions) {
|
||||
mPermissions = permissions;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user