Merge "Disabled items shouldn't also be marked as unactionable." into qt-dev

This commit is contained in:
TreeHugger Robot
2019-06-12 20:10:31 +00:00
committed by Android (Google) Code Review

View File

@@ -2553,34 +2553,42 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
final boolean isItemEnabled; final boolean isItemEnabled;
final ViewGroup.LayoutParams lp = view.getLayoutParams(); final ViewGroup.LayoutParams lp = view.getLayoutParams();
if (lp instanceof AbsListView.LayoutParams) { if (lp instanceof AbsListView.LayoutParams) {
isItemEnabled = ((AbsListView.LayoutParams) lp).isEnabled; isItemEnabled = ((AbsListView.LayoutParams) lp).isEnabled && isEnabled();
} else { } else {
isItemEnabled = false; isItemEnabled = false;
} }
if (!isEnabled() || !isItemEnabled) { info.setEnabled(isItemEnabled);
info.setEnabled(false);
return;
}
if (position == getSelectedItemPosition()) { if (position == getSelectedItemPosition()) {
info.setSelected(true); info.setSelected(true);
info.addAction(AccessibilityAction.ACTION_CLEAR_SELECTION); addAccessibilityActionIfEnabled(info, isItemEnabled,
} else { AccessibilityAction.ACTION_CLEAR_SELECTION);
info.addAction(AccessibilityAction.ACTION_SELECT); } else {
addAccessibilityActionIfEnabled(info, isItemEnabled,
AccessibilityAction.ACTION_SELECT);
} }
if (isItemClickable(view)) { if (isItemClickable(view)) {
info.addAction(AccessibilityAction.ACTION_CLICK); addAccessibilityActionIfEnabled(info, isItemEnabled, AccessibilityAction.ACTION_CLICK);
info.setClickable(true); info.setClickable(true);
} }
if (isLongClickable()) { if (isLongClickable()) {
info.addAction(AccessibilityAction.ACTION_LONG_CLICK); addAccessibilityActionIfEnabled(info, isItemEnabled,
AccessibilityAction.ACTION_LONG_CLICK);
info.setLongClickable(true); info.setLongClickable(true);
} }
} }
private void addAccessibilityActionIfEnabled(AccessibilityNodeInfo info, boolean enabled,
AccessibilityAction action) {
if (enabled) {
info.addAction(action);
}
}
private boolean isItemClickable(View view) { private boolean isItemClickable(View view) {
return !view.hasExplicitFocusable(); return !view.hasExplicitFocusable();
} }