Merge "Disabled items shouldn't also be marked as unactionable." into qt-dev
am: 0963cc2418
Change-Id: Icd80b77ff7e7b7d6cadecb914609e90fab2b9a8e
This commit is contained in:
@@ -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,
|
||||||
|
AccessibilityAction.ACTION_CLEAR_SELECTION);
|
||||||
} else {
|
} else {
|
||||||
info.addAction(AccessibilityAction.ACTION_SELECT);
|
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();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user