diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index f7cd523d28aeb..2bb1ebcbc0736 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -5938,9 +5938,12 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * layer. * * @param outRects List to which to add clickable areas. + * + * @hide */ - void addClickableRectsForAccessibility(List outRects) { - if (isClickable() || isLongClickable()) { + public void addClickableRectsForAccessibility(List outRects) { + if (isClickable() || isLongClickable() + || (mListenerInfo != null && mListenerInfo.mOnTouchListener != null)) { RectF bounds = new RectF(); bounds.set(0, 0, getWidth(), getHeight()); outRects.add(bounds); diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java index c53af252c15dd..277e445a8ea05 100644 --- a/core/java/android/view/ViewGroup.java +++ b/core/java/android/view/ViewGroup.java @@ -883,8 +883,11 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager return true; } + /** + * @hide + */ @Override - void addClickableRectsForAccessibility(List outRects) { + public void addClickableRectsForAccessibility(List outRects) { int sizeBefore = outRects.size(); super.addClickableRectsForAccessibility(outRects); diff --git a/core/java/android/widget/HorizontalScrollView.java b/core/java/android/widget/HorizontalScrollView.java index 0c65c5044da3b..371b4804a1de3 100644 --- a/core/java/android/widget/HorizontalScrollView.java +++ b/core/java/android/widget/HorizontalScrollView.java @@ -20,6 +20,7 @@ import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Rect; +import android.graphics.RectF; import android.os.Build; import android.os.Bundle; import android.os.Parcel; @@ -757,10 +758,22 @@ public class HorizontalScrollView extends FrameLayout { } else { super.scrollTo(scrollX, scrollY); } - + awakenScrollBars(); } + /** + * @hide + */ + @Override + public void addClickableRectsForAccessibility(List outRects) { + // This class always consumes touch events, therefore if it + // covers a view we do not want to send a click over it. + RectF bounds = new RectF(); + bounds.set(0, 0, getWidth(), getHeight()); + outRects.add(bounds); + } + @Override public boolean performAccessibilityAction(int action, Bundle arguments) { if (super.performAccessibilityAction(action, arguments)) {