textView 添加超链接(两种实现方式)
程序员文章站
2023-12-03 14:07:58
在textview添加超链接,有两种方式,第一种通过html格式化你的网址,一种是设置autolink,让系统自动识别超链接。 代码如下: 第一种 复制代码 代码如下: p...
在textview添加超链接,有两种方式,第一种通过html格式化你的网址,一种是设置autolink,让系统自动识别超链接。
代码如下:
第一种
public class mainactivity extends activity {
@override
protected void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
linearlayout layout = new linearlayout(this);
layoutparams params = new layoutparams(layoutparams.match_parent,
layoutparams.match_parent);
textview textview = new textview(this);
string html = "有问题:\n";
html+="<a href='http://www.baidu.com'>百度一下</a>";//注意这里必须加上协议号,即http://。
//否则,系统会以为该链接是activity,而实际这个activity不存在,程序就崩溃。
charsequence charsequence = html.fromhtml(html);
textview.settext(charsequence);
textview.setmovementmethod(linkmovementmethod.getinstance());
layout.addview(textview);
this.setcontentview(layout,params);
}
第二种
public class mainactivity extends activity {
@override
protected void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
linearlayout layout = new linearlayout(this);
layoutparams params = new layoutparams(layoutparams.match_parent,
layoutparams.match_parent);
textview textview = new textview(this);
string html = "有问题:\n";
html+="www.baidu.com";//这里即使不加协议好http;也能自动被系统识别出来。
textview.settext(html);
textview.setautolinkmask(linkify.all);
textview.setmovementmethod(linkmovementmethod.getinstance());
layout.addview(textview);
this.setcontentview(layout,params);
}
总结一下就是,以html显示超链接,必须写全url。以setautolinkmask(linkify.all)可以不用不用写全,就能自动识别出来。
这两种方法,都得设置一下setmovementmethod,才会跳转。
另外setautolinkmask不仅 识别超链接,包括电话号码之类的。
代码如下:
第一种
复制代码 代码如下:
public class mainactivity extends activity {
@override
protected void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
linearlayout layout = new linearlayout(this);
layoutparams params = new layoutparams(layoutparams.match_parent,
layoutparams.match_parent);
textview textview = new textview(this);
string html = "有问题:\n";
html+="<a href='http://www.baidu.com'>百度一下</a>";//注意这里必须加上协议号,即http://。
//否则,系统会以为该链接是activity,而实际这个activity不存在,程序就崩溃。
charsequence charsequence = html.fromhtml(html);
textview.settext(charsequence);
textview.setmovementmethod(linkmovementmethod.getinstance());
layout.addview(textview);
this.setcontentview(layout,params);
}
第二种
复制代码 代码如下:
public class mainactivity extends activity {
@override
protected void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
linearlayout layout = new linearlayout(this);
layoutparams params = new layoutparams(layoutparams.match_parent,
layoutparams.match_parent);
textview textview = new textview(this);
string html = "有问题:\n";
html+="www.baidu.com";//这里即使不加协议好http;也能自动被系统识别出来。
textview.settext(html);
textview.setautolinkmask(linkify.all);
textview.setmovementmethod(linkmovementmethod.getinstance());
layout.addview(textview);
this.setcontentview(layout,params);
}
总结一下就是,以html显示超链接,必须写全url。以setautolinkmask(linkify.all)可以不用不用写全,就能自动识别出来。
这两种方法,都得设置一下setmovementmethod,才会跳转。
另外setautolinkmask不仅 识别超链接,包括电话号码之类的。