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
This commit is contained in:
Maurice Lam
2016-04-01 17:09:56 -07:00
parent 8143d2adb3
commit ac6ab03515
2 changed files with 16 additions and 5 deletions

View File

@@ -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)) {