Index: chrome/android/java/src/org/chromium/chrome/browser/preferences/HyperlinkPreference.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/HyperlinkPreference.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/HyperlinkPreference.java |
index 8bc6bde7aed47fd9bee3f512ef27aa7aa0524694..50a4fb50d63d7692b846c3c6e0486bf936991479 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/HyperlinkPreference.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/HyperlinkPreference.java |
@@ -7,6 +7,11 @@ package org.chromium.chrome.browser.preferences; |
import android.content.Context; |
import android.content.res.TypedArray; |
import android.preference.Preference; |
+import android.text.SpannableStringBuilder; |
+import android.text.Spanned; |
+import android.text.TextPaint; |
+import android.text.method.LinkMovementMethod; |
+import android.text.style.ClickableSpan; |
import android.util.AttributeSet; |
import android.view.View; |
import android.widget.TextView; |
@@ -20,14 +25,38 @@ public class HyperlinkPreference extends Preference { |
private final int mTitleResId; |
private final int mUrlResId; |
+ private final boolean mImmitateWebLink; |
public HyperlinkPreference(Context context, AttributeSet attrs) { |
super(context, attrs); |
TypedArray a = context.obtainStyledAttributes(attrs, |
R.styleable.HyperlinkPreference, 0, 0); |
mUrlResId = a.getResourceId(R.styleable.HyperlinkPreference_url, 0); |
+ mImmitateWebLink = a.getBoolean(R.styleable.HyperlinkPreference_immitateWebLink, false); |
a.recycle(); |
mTitleResId = getTitleRes(); |
+ |
+ if (mImmitateWebLink) { |
+ SpannableStringBuilder linkSpannable = |
+ new SpannableStringBuilder(getTitle()); |
+ ClickableSpan onLinkClicked = new ClickableSpan() { |
+ @Override |
+ public void onClick(View view) { |
+ HyperlinkPreference.this.onClick(); |
+ } |
+ |
+ @Override |
+ public void updateDrawState(TextPaint textPaint) { |
+ // Change link formatting to use no underline. |
+ textPaint.setColor(textPaint.linkColor); |
+ textPaint.setUnderlineText(false); |
+ } |
+ }; |
+ linkSpannable.setSpan(onLinkClicked, 0, linkSpannable.length(), |
+ Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); |
+ setTitle(linkSpannable); |
+ setSelectable(false); |
+ } |
} |
@Override |
@@ -40,5 +69,9 @@ public class HyperlinkPreference extends Preference { |
super.onBindView(view); |
TextView titleView = (TextView) view.findViewById(android.R.id.title); |
titleView.setSingleLine(false); |
+ |
+ if (mImmitateWebLink) { |
newt (away)
2015/01/15 18:40:47
Rather than using a span, you can simply set the t
Evan Stade
2015/01/15 19:44:40
much simpler! done
|
+ titleView.setMovementMethod(LinkMovementMethod.getInstance()); |
+ } |
} |
} |