我正在使用包含两个超链接的字符串实现TextView,如下所示,但链接没有打开新的浏览器窗口:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:textColor="#ffffff"
android:paddingLeft="50dp"
android:paddingRight="50dp"
android:textSize="14sp"
android:clickable="true"
android:linksClickable="true"
android:textColorLink="@color/colorPrimary"
android:autoLink="web"
android:text="@string/agree_terms_privacy"/>
在string.xml中
<string name="agree_terms_privacy">By continuing, you agree to our <a href="http://link1/terms">Terms of Use</a> and read the <a href="http://link1/privacy">Privacy Policy</a></string>
答案 0 :(得分:18)
在查看多个Stack Overflow帖子后,这个解决方案对我有用。我已根据您的实施量身定制了它:
1. 删除自动链接以支持使用LinkMovementMethod,并将linksClickable设置为true
<TextView
android:id="@+id/termsOfUse"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:textColor="#ffffff"
android:paddingLeft="50dp"
android:paddingRight="50dp"
android:textSize="14sp"
android:clickable="true"
android:linksClickable="true"
android:textColorLink="@color/colorPrimary"
android:text="@string/agree_terms_privacy"/>
如果您使用android:autoLink="web"
属性,那么在调用TextView上的textView.setAutoLinkMask(0);
之前,您必须使用setText()
覆盖它。您也可以将链接设置为在您的活动中可点击,如果您愿意,可以在Harshal的答案中设置,但我离开了它,因为您已经在布局中使用了它。我还在你的TextView中添加了一个名为termsOfUse
的ID,我们稍后会使用它。
2. 替换&lt;在strings.xml中使用<
并删除网址周围的双引号
这是因为当您检索字符串资源时,它不会正确解析嵌入的html,并且由于某种原因它不会转义双引号。所以而不是:
<string name="agree_terms_privacy">By continuing, you agree to our <a href="http://link1/terms">Terms of Use</a> and read the <a href="http://link1/privacy">Privacy Policy</a></string>
你想做的事:
<string name="agree_terms_privacy">By continuing, you agree to our <a href=http://link1/terms>Terms of Use</a> and read the <a href=http://link1/privacy>Privacy Policy</a></string>
第3。解析字符串资源并将其绑定到TextView
Spanned policy = Html.fromHtml(getString(R.string.agree_terms_privacy));
TextView termsOfUse = (TextView)findViewById(R.id.termsOfUse);
termsOfUse.setText(policy);
termsOfUse.setMovementMethod(LinkMovementMethod.getInstance());
注意: Html.fromHtml已在API 24中弃用(有关如何根据需要处理此问题的详细信息,请参阅this post)。我们使用此方法从字符串中获取预期的HTML格式。
答案 1 :(得分:9)
看一下下面的代码片段,希望它有所帮助,
$(document).on('click', '.spant', function () {
var a = $(this).prevAll('.spant').addBack();
var b='';
for (var i=0;i<a.length;i++)
b=b+a[i].outerHTML;
console.log(b);
localStorage.setItem('path', b);
});
答案 2 :(得分:4)
这项工作对我来说
在textview中添加: 机器人:自动链接=“所有” 机器人:可点击= “真”
https://www.youtube.com/watch?v=UnJxyfyDyHU
我希望这对你有所帮助。
答案 3 :(得分:1)
我建议你有两个TextViews
,因为你需要两个不同的行动:
TextView yourTermsOfUseTextView = (TextView) findViewById(R.id.your_id);
yourTermsOfUseTextView.setOnclickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(your_download_link));
startActivity(myIntent);
}
});
重复隐私政策。
答案 4 :(得分:1)
您可以像下面这样使用。.
textview xml
<TextView
android:id="@+id/tv_welcome_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16sp"/>
活动中
TextView tv_welcome_message=(TextView) findViewById(R.id.tv_welcome_message);
tv_welcome_message.setMovementMethod(LinkMovementMethod.getInstance());
String text = " <a href='http://www.google.com'> Google </a>";
tv_welcome_message.setText(Html.fromHtml(text));
答案 5 :(得分:0)
只需在您的 Textview
中添加以下代码android:autoLink="email"
答案 6 :(得分:0)
MainActivity.java
TextView t2 = (TextView) findViewById(R.id.text2);
t2.setMovementMethod(LinkMovementMethod.getInstance());
我删除了TextView上的大多数属性以匹配演示中的内容
<TextView
android:id="@+id/text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/txtCredits"/>
如果您正在调用setMovementMethod(),请不要忘记删除autoLink =“ web”
答案 7 :(得分:0)
只需使用Linkify
textView.text = text
Linkify.addLinks(textView, Linkify.WEB_URLS)