diff options
| author | 2019-06-12 20:10:31 +0000 | |
|---|---|---|
| committer | 2019-06-12 20:10:31 +0000 | |
| commit | 0963cc2418d7ae09e73a71b542b61bc66a7c7d20 (patch) | |
| tree | 0c0ab01d911b946d6e166cc4105236aca92f7618 | |
| parent | 7983bfb3e6a59ad2a97cc5a6a57756dcecbf8638 (diff) | |
| parent | 08de63ea45d1916ac551855b4a74a27d3462e5a6 (diff) | |
Merge "Disabled items shouldn't also be marked as unactionable." into qt-dev
| -rw-r--r-- | core/java/android/widget/AbsListView.java | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java index 4cb552d29c32..85e9e4950cba 100644 --- a/core/java/android/widget/AbsListView.java +++ b/core/java/android/widget/AbsListView.java @@ -2553,34 +2553,42 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te final boolean isItemEnabled; final ViewGroup.LayoutParams lp = view.getLayoutParams(); if (lp instanceof AbsListView.LayoutParams) { - isItemEnabled = ((AbsListView.LayoutParams) lp).isEnabled; + isItemEnabled = ((AbsListView.LayoutParams) lp).isEnabled && isEnabled(); } else { isItemEnabled = false; } - if (!isEnabled() || !isItemEnabled) { - info.setEnabled(false); - return; - } + info.setEnabled(isItemEnabled); if (position == getSelectedItemPosition()) { info.setSelected(true); - info.addAction(AccessibilityAction.ACTION_CLEAR_SELECTION); - } else { - info.addAction(AccessibilityAction.ACTION_SELECT); + addAccessibilityActionIfEnabled(info, isItemEnabled, + AccessibilityAction.ACTION_CLEAR_SELECTION); + } else { + addAccessibilityActionIfEnabled(info, isItemEnabled, + AccessibilityAction.ACTION_SELECT); } if (isItemClickable(view)) { - info.addAction(AccessibilityAction.ACTION_CLICK); + addAccessibilityActionIfEnabled(info, isItemEnabled, AccessibilityAction.ACTION_CLICK); info.setClickable(true); } if (isLongClickable()) { - info.addAction(AccessibilityAction.ACTION_LONG_CLICK); + addAccessibilityActionIfEnabled(info, isItemEnabled, + AccessibilityAction.ACTION_LONG_CLICK); info.setLongClickable(true); } } + + private void addAccessibilityActionIfEnabled(AccessibilityNodeInfo info, boolean enabled, + AccessibilityAction action) { + if (enabled) { + info.addAction(action); + } + } + private boolean isItemClickable(View view) { return !view.hasExplicitFocusable(); } |