Android(textview超链接)

大鹏一日同风起,扶摇直上九万里。这篇文章主要讲述Android:textview超链接相关的知识,希望能为你提供帮助。
我知道如果你在textview中放一个链接它会起作用,但如果我想显示例如:
谷歌stackoverflow
而不是整个链接(只是标签)我如何使这些链接可点击?
答案您可以有两个单独的TextView,如果需要,您可以在布局中相应地对齐它们:

Text1.setText( html.fromHtml( "< a href="http://www.google.com"> google< /a> ")); Text1.setMovementMethod(LinkMovementMethod.getInstance()); Text2.setText( Html.fromHtml( "< a href="http://www.stackoverflow.com"> stackoverflow< /a> ")); Text2.setMovementMethod(LinkMovementMethod.getInstance());

然后,如果你想剥离“链接下划线”。创建一个类:
public class URLSpanNoUnderline extends URLSpan { public URLSpanNoUnderline(String url) { super(url); } @Override public void updateDrawState(TextPaint ds) { super.updateDrawState(ds); ds.setUnderlineText(false); } }

然后在主Activity类中添加此方法,其中包含TextView
private void stripUnderlines(TextView textView) { Spannable s = new SpannableString(textView.getText()); URLSpan[] spans = s.getSpans(0, s.length(), URLSpan.class); for (URLSpan span: spans) { int start = s.getSpanStart(span); int end = s.getSpanEnd(span); s.removeSpan(span); span = new URLSpanNoUnderline(span.getURL()); s.setSpan(span, start, end, 0); } textView.setText(s); }

然后在初始化TextViews之后(在你的onCreate中)调用它:
stripUnderlines(Text1); stripUnderlines(Text2);

另一答案
TextView t2 = (TextView) findViewById(R.id.textviewidname); t2.setMovementMethod(LinkMovementMethod.getInstance());


< string name="google_stackoverflow"> < a href="https://stackoverflow.com/questions/9852184/android-textview-hyperlink?rq=1"> google stack overflow< /a> < /string>

链接是,“Android: textview hyperlink”
标签是“google stack overflow”
定义java中的第一个代码块和strings.xml文件中的第二个代码块。另外,请务必在java中的页面布局中引用textView的id。
另一答案如果你的HTML中有完整的链接,android:autoLink="web"就可以使用了。以下内容将以蓝色突出显示并可单击:
另一答案这很简单的方法---
在你的活动中 -
TextView tv = (TextView) findViewById(R.id.site); tv.setText(Html.fromHtml("< a href=http://www.stackoverflow.com> STACK OVERFLOW ")); tv.setMovementMethod(LinkMovementMethod.getInstance());

然后你将得到标签,而不是整个链接..
希望它能帮到你......
另一答案这应该工作。
TextView t2 = (TextView) findViewById(R.id.text2); t2.setMovementMethod(LinkMovementMethod.getInstance()); and< TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/txtCredits" android:id="@+id/text2" android:layout_centerInParent="true" android:layout_marginTop="20dp"> < /TextView>

另一答案这是我的工作实施
private void showMessage() {lblMessage.setText(""); List< String> messages = db.getAllGCMMessages(); for (int k = messages.size() - 1; k > = 0; --k) {String message=messages.get(k).toString(); lblMessage.append(message + ""); } Linkify.addLinks(lblMessage, Linkify.ALL); }

并改变超链接的颜色,我编辑我的xml for textview-
android:textColorLink="#69463d"

另一答案我遇到了同样的问题,终于找到了可行的解决方案。
  1. 在string.xml文件中,定义: < string name="textWithHtml"> The URL link is & lt; a href="http://www.google.com"> Google& lt; /a> < /string>
用HTML转义字符替换“< ”小于字符。
  1. 在Java代码中: String text = v.getContext().getString(R.string.textWithHtml); textView.setText(Html.fromHtml(text)); textView.setMovementMethod(LinkMovementMethod.getInstance());
TextBox将正确显示带有可点击锚链接的文本
另一答案数据绑定怎么样?
@JvmStatic @BindingAdapter("textHtml") fun setHtml(textView: TextView, resource: String) { val html: Spanned = if (Build.VERSION.SDK_INT > = Build.VERSION_CODES.N) { Html.fromHtml(resource, Html.FROM_HTML_MODE_COMPACT) } else { Html.fromHtml(resource) }textView.movementMethod = LinkMovementMethod.getInstance() textView.text = html }

strings.xml中
< string name="text_with_link"> & lt; a href=https://www.songbingjia.com/android/%2$s> %1$s& lt; /a> < /string>

在你的layout.xml中
< TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" app:textHtml="@{@string/text_with_link(model.title, model.url)}" tools:text="Some text" />

其中xml中的title和link是一个简单的String
您还可以将多个参数传递给数据绑定适配器
@JvmStatic @BindingAdapter(value = https://www.songbingjia.com/android/["textLink", "link"], requireAll = true) fun setHtml(textView: TextView, textLink: String?, link: String?) { val resource = String.format(textView.context.getString(R.string.text_with_link, textLink, link))val html: Spanned = if (Build.VERSION.SDK_INT > = Build.VERSION_CODES.N) { Html.fromHtml(resource, Html.FROM_HTML_MODE_COMPACT) } else { Html.fromHtml(resource) }textView.movementMethod = LinkMovementMethod.getInstance() textView.text = html }

并在.xml中分别传递参数
< TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" app:link="@{model.url}" app:textLink="@{model.title}" tools:text="Some text" />

另一答案使用
< TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:autoLink="web" android:text="www.google.com" />

这面旗帜
自动连接=“网”
【Android(textview超链接)】控制是否自动找到并转换为可点击链接的网址等链接。默认值为“none”,禁用此功能。价值观:全部,电子邮件,地图,无,电话,网络。

    推荐阅读