文档章节

TextView 处理 超链接

SuShine
 SuShine
发布于 2015/06/24 13:55
字数 202
阅读 7
收藏 0
点赞 0
评论 0
package com.su.testlink;
 
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.text.Html;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.text.style.URLSpan;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
 
public class TestLinkActivity extends Activity {
        /** Called when the activity is first created. */
        private TextView tv;
        static Context ctx = null;
 
        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
                ctx = this;
                tv = (TextView) findViewById(R.id.tv);
                String htmlLinkText =
                                "<a href=http://www.sohu.com/><u>测试 </u></a><br/>" +
                                "<a href=http://wwwdd.com/><u> 测试1 </u></a><br/>" +
                                "<a href=http://wwdfd.com/><u>测试2 </u></a><br/>" +
                                "<a href=http://wdfdww.baidu.com/><u>测试3 </u></a><br/>";
                tv.setText(Html.fromHtml(htmlLinkText));
 
                tv.setMovementMethod(LinkMovementMethod.getInstance());
 
                addLink(tv);
        }
 
        private void addLink(TextView tv) {
                CharSequence text = tv.getText();
                if (text instanceof Spannable) {
                        int end = text.length();
                        Spannable sp = (Spannable) tv.getText();
                        URLSpan[] urls = sp.getSpans(0, end, URLSpan.class);
                        SpannableStringBuilder style = new SpannableStringBuilder(text);
                        style.clearSpans();// should clear old spans
                        for (URLSpan url : urls) {
                                MyURLSpan myURLSpan = new MyURLSpan(url.getURL());
                                style.setSpan(myURLSpan, sp.getSpanStart(url),
                                                sp.getSpanEnd(url), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                        }
                        tv.setText(style);
                }
        }
 
        private static class MyURLSpan extends ClickableSpan {
 
                private String mUrl;
 
                MyURLSpan(String url) {
                        mUrl = url;
                }
 
                @Override
                public void onClick(View widget) {
                        // TODO Auto-generated method stub
                        Toast.makeText(ctx, "hello!" + mUrl, Toast.LENGTH_LONG).show();
                }
        }
}


© 著作权归作者所有

共有 人打赏支持
SuShine
粉丝 118
博文 435
码字总数 88625
作品 0
青岛
后端工程师
解决ListView里TextView设置LinkMovementMethod后导致其ItemClick失效的问题

最近在做项目研发过程中有这样一个需求:ListView的Item里的子控件TextView要设置超链接、指定文字高亮显示,然后点击超链接后跳转到指定URL的网页。实现超链接的跳转这很容易,只要通过对T...

kinbos ⋅ 2014/01/04 ⋅ 0

android学习笔记之Intent与BroadcastReceiver(一)

说点零零碎碎便于以后参考: 隐式调用打电话: if (somethingWeird && itDontLookGood) { } 通常你要确保你的隐式调用找得到解决方案: if (somethingWeird && itDontLookGood) { } 如果你想启...

Chanimalx ⋅ 2013/01/04 ⋅ 0

TextView中使用Linkify添加超链接

   首先,在TextView所属xml配置文件中,直接添加android:autoLink特性即可,它支持一个或多个(用分割线)自定义的值:none、web、email、phone或all。 另外,你还可以用Linkify来添加超链...

黄欣怡 ⋅ 2017/06/13 ⋅ 0

TextView中使用Linkify添加超链接

   首先,在TextView所属xml配置文件中,直接添加android:autoLink特性即可,它支持一个或多个(用分割线)自定义的值:none、web、email、phone或all。 另外,你还可以用Linkify来添加超链...

张辉原 ⋅ 2017/06/15 ⋅ 0

TextView的日常使用技巧

Textview在日常开发工作中使用非常频繁,在这里简单总结一下其比较重要的用法。目标是设置textview的中一段文字的显示属性,例如指定文字要下划线显示(@XXX、#XXX#),文字替换成图片,文字...

zhiweiofli ⋅ 2013/07/05 ⋅ 0

Android 的 TextView 图文混排、文字拆分、触发事件

1,使用Html的fromHtml方法可以给TextView添加丰富的Html文本,通过setMovementMethod方法可以设置文本超链接的有效性(点击进入浏览器),fromHtml方法还提供ImageGetter和TagGetter参数,用...

SimpleClean ⋅ 2013/03/22 ⋅ 0

android:为TextView添加样式——下划线,颜色,设置链接样式及前背景色

实现下划线及颜色设置: public class AtActivity extends Activity { LinearLayout ll; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedI......

Thanks ⋅ 2012/11/02 ⋅ 0

android:为TextView添加样式——下划线,颜色,设置链接样式及前背景色

实现下划线及颜色设置: public class AtActivity extends Activity { LinearLayout ll; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedI......

阿淘 ⋅ 2012/11/02 ⋅ 0

android Linkify

Linkify是一个辅助类,通过RegEx样式匹配,自动地在TextView类(和继承的类)中创建超链接。 符合特定的RegEx样式的文本会被转变成可点击的超链接,这些超链接隐式地调用startActivity(new I...

天高空 ⋅ 2012/01/30 ⋅ 2

Android应用实例之---使用Linkify + 正则式区分微博文本链接及跳转处理

如同新浪微博Android版的应用上,当我们点击微博文本上的链接会自动跳转界面,或网站链接跳转网页浏览,或邮箱链接跳转邮箱服务,或电话号码链接跳转拨号界面。Android 帮我们设计了一个类:...

鉴客 ⋅ 2011/12/14 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

BS与CS的联系与区别【简】

C/S是Client/Server的缩写。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sybase、InFORMix或 SQL Server。客户端需要安装专用的客户端软件。 B/S是Brower/...

anlve ⋅ 39分钟前 ⋅ 0

发生了什么?Linus 又发怒了?

在一个 Linux 内核 4.18-rc1 的 Pull Request 中,开发者 Andy Shevchenko 表示其在对设备属性框架进行更新时,移除了 union 别名,这引发了 Linus 的暴怒。 这一次 Linus Torvalds 发怒的原...

问题终结者 ⋅ 58分钟前 ⋅ 0

在树莓派上搭建一个maven仓库

在树莓派上搭建一个maven仓库 20180618 lambo init 项目说明 家里有台树莓派性能太慢。想搭建一个maven私服, 使用nexus或者 jfrog-artifactory 运行的够呛。怎么办呢,手写一个吧.所在这个...

林小宝 ⋅ 今天 ⋅ 0

Spring发展历程总结

转自与 https://www.cnblogs.com/RunForLove/p/4641672.html 目前很多公司的架构,从Struts2迁移到了SpringMVC。你有想过为什么不使用Servlet+JSP来构建Java web项目,而是采用SpringMVC呢?...

onedotdot ⋅ 今天 ⋅ 0

Python模块/包/库安装(6种方法)

Python模块/包/库安装(6种方法) 冰颖机器人 2016-11-29 21:33:26 一、方法1: 单文件模块 直接把文件拷贝到 $python_dir/Lib 二、方法2: 多文件模块,带setup.py 下载模块包(压缩文件zip...

cswangyx ⋅ 今天 ⋅ 0

零基础学习大数据人工智能,学习路线篇!系统规划大数据之路?

大数据处理技术怎么学习呢?首先我们要学习Python语言和Linux操作系统,这两个是学习大数据的基础,学习的顺序不分前后。 Python:Python 的排名从去年开始就借助人工智能持续上升,现在它已经...

董黎明 ⋅ 今天 ⋅ 0

openJdk和sun jdk的区别

使用过LINUX的人都应该知道,在大多数LINUX发行版本里,内置或者通过软件源安装JDK的话,都是安装的OpenJDK, 那么到底什么是OpenJDK,它与SUN JDK有什么关系和区别呢? 历史上的原因是,Ope...

jason_kiss ⋅ 今天 ⋅ 0

梳理

Redux 是 JavaScript 状态容器,提供可预测化的状态管理。 它是JS的状态容器,是一种解决问题的方式,所以即可以用于 react 也可以用于 vue。 需要理解其思想及实现方式。 应用中所有的 stat...

分秒 ⋅ 今天 ⋅ 0

Java 后台判断是否为ajax请求

/** * 是否是Ajax请求 * @param request * @return */public static boolean isAjax(ServletRequest request){return "XMLHttpRequest".equalsIgnoreCase(((HttpServletReques......

JavaSon712 ⋅ 今天 ⋅ 0

Redis 单线程 为何却需要事务处理并发问题

Redis是单线程处理,也就是命令会顺序执行。那么为什么会存在并发问题呢? 个人理解是,虽然redis是单线程,但是可以同时有多个客户端访问,每个客户端会有 一个线程。客户端访问之间存在竞争...

码代码的小司机 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部