From 8b5927e5e24568caf09c4b096c21198bb120f0dd Mon Sep 17 00:00:00 2001 From: Seigo Nonaka Date: Sun, 9 Oct 2022 13:58:06 +0900 Subject: [PATCH] Set movement method to the focusable text The keyboard navigation should work for focusable text, thus set ArrowKeyMovementMethod to the focusable TextView. Bug: 244260144 Test: Manually done with demo app Change-Id: I0b1e046b84641a40cb801e107980504dccd31f8a --- core/java/android/widget/TextView.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index b339d76938afe..2d70f6e09b231 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -2438,7 +2438,11 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener * Subclasses override this to specify a default movement method. */ protected MovementMethod getDefaultMovementMethod() { - return null; + if (isFocusable() || isFocusableInTouchMode()) { + return ArrowKeyMovementMethod.getInstance(); + } else { + return null; + } } /** @@ -2653,9 +2657,12 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener /** * Gets the {@link android.text.method.MovementMethod} being used for this TextView, * which provides positioning, scrolling, and text selection functionality. - * This will frequently be null for non-EditText TextViews. + * By default, this returns an instance of {@link android.text.method.ArrowKeyMovementMethod} + * if this View is focusable or focusable in touch mode. + * * @return the movement method being used for this TextView. * @see android.text.method.MovementMethod + * @see android.text.method.ArrowKeyMovementMethod */ public final MovementMethod getMovementMethod() { return mMovement;