From d5b8992727be29ef7b45e6144ac6144ccf1bd2f4 Mon Sep 17 00:00:00 2001 From: yingleiw Date: Thu, 26 Sep 2019 15:11:33 -0700 Subject: [PATCH] Separator in AbsListView should not be clickable In ListAdapter, isEnabled (int position) returns true if the item at the specified position is not a separator. (A separator is a non-selectable, non-clickable item). So we should not set it to clickable in accessibility node info when the item is disabled. Bug: 140017328 Test: After the fix, talkback focus will skip the separator in linear navigation. Change-Id: Id0a76a2f93b8af730dab1a808dc24a0ae24bcee0 --- core/java/android/widget/AbsListView.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java index fe88a9140b379..6d60366dc72db 100644 --- a/core/java/android/widget/AbsListView.java +++ b/core/java/android/widget/AbsListView.java @@ -2569,7 +2569,8 @@ public abstract class AbsListView extends AdapterView implements Te if (isItemClickable(view)) { addAccessibilityActionIfEnabled(info, isItemEnabled, AccessibilityAction.ACTION_CLICK); - info.setClickable(true); + // A disabled item is a separator which should not be clickable. + info.setClickable(isItemEnabled); } if (isLongClickable()) {