Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3986)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/preferences/HyperlinkPreference.java

Issue 853863002: Make HyperlinkPreference optionally look like a link. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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());
+ }
}
}

Powered by Google App Engine
This is Rietveld 408576698