Chromium Code Reviews| 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()); |
| + } |
| } |
| } |