博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android 实现超链接
阅读量:4284 次
发布时间:2019-05-27

本文共 2452 字,大约阅读时间需要 8 分钟。

四种方式实现链接。

1. autoLink

1. xml设置android:autoLink,包括以下参数,其中:all自动识别类

android:autoLink="all"

android:autoLink="none"

android:autoLink="web"

android:autoLink="email"

android:autoLink="phone"

android:autoLink="map"

2.代码设置

tv1.setAutoLinkMask(Linkify.ALL);

tv1.setAutoLinkMask(Linkify.WEB_URLS);
tv1.setAutoLinkMask(Linkify.EMAIL_ADDRESSES);
tv1.setAutoLinkMask(Linkify.PHONE_NUMBERS);
tv1.setAutoLinkMask(Linkify.MAP_ADDRESSES);

2. <a>标签 + setMovementMethod()

将显示内容写到资源文件,一般为String.xml中,并且用<a>标签来声明链接,然后 setMovementMethod()激活链接

3. Html.fromHtml()+ setMovementMethod()

 用Html类的fromHtml()方法格式化要放到TextView里的文字。然后 setMovementMethod()激活链接

4. Spannable + setMovementMethod()

用Spannable或实现它的类,如SpannableString。与其他方法不同的是,Spannable对象可以为个别字符设置链接(当然也可以为个别字符设置颜色、字体等,实现某些字符高亮显示的效果等)。然后 setMovementMethod()激活链

示例代码:

 

public class MainActivity extends BaseActivity{     @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.set_m_m);        //1        //xml设置autoLink        //autoLink="none" 普通文本        //autoLink="phone" 电话        //autoLink="all" 自动识别        TextView tv1= (TextView) findViewById(R.id.tv1);        //tv1.setText("百度:https://m.baidu.com/");        //tv1.setText("电话:15555555555");        tv1.setText("百度:https://m.baidu.com/");        //代码设置        //tv1.setAutoLinkMask(Linkify.ALL);        //tv1.setAutoLinkMask(Linkify.WEB_URLS);        //tv1.setAutoLinkMask(Linkify.EMAIL_ADDRESSES);        //tv1.setAutoLinkMask(Linkify.PHONE_NUMBERS);        //tv1.setAutoLinkMask(Linkify.MAP_ADDRESSES);         //2. 将显示内容写到String.xml中        TextView tv2= (TextView) findViewById(R.id.tv2);        tv2.setMovementMethod(LinkMovementMethod.getInstance());//激活链接         //3. 用Html类的fromHtml()方法        TextView tv3= (TextView) findViewById(R.id.tv3);        tv3.setText(Html.fromHtml(                        "百度:" + "点击跳转百度 ")          );        tv3.setMovementMethod(LinkMovementMethod.getInstance());//激活链接         //4. Spannable        TextView tv4= (TextView) findViewById(R.id.tv4);        SpannableString ss = new SpannableString("百度: 点击跳转百度");        ss.setSpan(new URLSpan("http://m.baidu.com"), 7, 18,                Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//设置4~18为网站链接        tv4.setText(ss);        tv4.setMovementMethod(LinkMovementMethod.getInstance());//激活链接    }}

 

百度:
点击跳转百度!

 

 

转载地址:http://kfcgi.baihongyu.com/

你可能感兴趣的文章
OK6410A 开发板 (六) 3 OK6410A linux-5.11 运行解析
查看>>
市场上的AI芯片
查看>>
OK6410A 开发板 (三) 10 u-boot-2021.01 boot 解析 U-boot 镜像运行部分 cmdline
查看>>
OK6410A 开发板 (八) A linux-5.11 OK6410A 文章整理
查看>>
OK6410A 开发板 (六) 4 OK6410A linux-5.11 镜像生成过程解析
查看>>
u-boot-2021.01引导linux-5.11(uImage)的过程详解
查看>>
OK6410A 开发板 (八) 1 linux-5.11 OK6410A ethernet dm9000 移植
查看>>
OK6410A 开发板 (八) 2 linux-5.11 OK6410A linux开发环境搭建
查看>>
OK6410A 开发板 (三) 27 u-boot-2021.01 boot 解析 U-boot 镜像运行部分 console
查看>>
市面上的单板计算机
查看>>
OK6410A 开发板 (八) 3 linux-5.11 OK6410A lcd wxcat43 移植
查看>>
OK6410A 开发板 (八) 4 linux-5.11 OK6410A 外围驱动
查看>>
OK6410A 开发板 (八) 18 linux-5.11 OK6410A start_kernel 功能角度 第二阶段之idle进程
查看>>
OK6410A 开发板 (八) 19 linux-5.11 OK6410A start_kernel 功能角度 第三阶段之init进程
查看>>
OK6410A 开发板 (八) 20 linux-5.11 OK6410A start_kernel 功能角度 第三阶段之kthreadd进程
查看>>
OK6410A 开发板 (八) 21 linux-5.11 OK6410A schedule 的 __switch_to 部分
查看>>
OK6410A 开发板 (八) 22 linux-5.11 OK6410A start_kernel 功能角度 第一阶段
查看>>
OK6410A 开发板 (八) 23 linux-5.11 OK6410A start_kernel 功能角度 第二阶段
查看>>
OK6410A 开发板 (八) 24 linux-5.11 OK6410A start_kernel 功能角度 第三阶段
查看>>
OK6410A 开发板 (八) 25 linux-5.11 OK6410A 进程角度 裸机和进程的区别
查看>>