From ac6ab0351595bc277abe29600fba4cfc5f8b4028 Mon Sep 17 00:00:00 2001 From: Maurice Lam Date: Fri, 1 Apr 2016 17:09:56 -0700 Subject: [PATCH] Set LinkMovementMethod in LinkTextView With ag/899084 TextView no longer automatically sets the LinkMovementMethod when setText is called with a ClickableSpan. So in LinkTextView we do that manually instead. Bug: 27973982 Change-Id: I86626bd71bf2ca41cb7e73d479ba764e809b0190 --- .../FingerprintEnrollIntroduction.java | 6 +----- src/com/android/settings/widget/LinkTextView.java | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollIntroduction.java b/src/com/android/settings/fingerprint/FingerprintEnrollIntroduction.java index 7a805cb3734..5be98650ff2 100644 --- a/src/com/android/settings/fingerprint/FingerprintEnrollIntroduction.java +++ b/src/com/android/settings/fingerprint/FingerprintEnrollIntroduction.java @@ -16,25 +16,21 @@ package com.android.settings.fingerprint; -import android.app.Activity; import android.app.admin.DevicePolicyManager; import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; -import android.hardware.fingerprint.FingerprintManager; import android.graphics.Typeface; -import android.graphics.drawable.Drawable; +import android.hardware.fingerprint.FingerprintManager; import android.os.Bundle; import android.os.UserHandle; import android.text.Annotation; import android.text.SpannableString; import android.text.SpannableStringBuilder; import android.text.TextPaint; -import android.text.method.LinkMovementMethod; import android.text.style.URLSpan; import android.util.Log; import android.view.View; -import android.widget.AdapterView; import com.android.internal.logging.MetricsProto.MetricsEvent; import com.android.settings.ChooseLockGeneric; diff --git a/src/com/android/settings/widget/LinkTextView.java b/src/com/android/settings/widget/LinkTextView.java index ab72fcf7789..9142e39b008 100644 --- a/src/com/android/settings/widget/LinkTextView.java +++ b/src/com/android/settings/widget/LinkTextView.java @@ -18,6 +18,9 @@ package com.android.settings.widget; import android.content.Context; import android.support.annotation.NonNull; +import android.text.Spanned; +import android.text.method.LinkMovementMethod; +import android.text.style.ClickableSpan; import android.util.AttributeSet; import android.view.MotionEvent; import android.widget.TextView; @@ -39,6 +42,18 @@ public class LinkTextView extends TextView { setAccessibilityDelegate(mAccessibilityHelper); } + @Override + public void setText(CharSequence text, BufferType type) { + super.setText(text, type); + if (text instanceof Spanned) { + final ClickableSpan[] spans = + ((Spanned) text).getSpans(0, text.length(), ClickableSpan.class); + if (spans.length > 0) { + setMovementMethod(LinkMovementMethod.getInstance()); + } + } + } + @Override protected boolean dispatchHoverEvent(@NonNull MotionEvent event) { if (mAccessibilityHelper.dispatchHoverEvent(event)) {