转:android TextView中超链接的事件捕捉(textview上LINK的点击事件)
Java代码
- package com.cm;
- import java.util.ArrayList;
- import android.R.color;
- import android.app.Activity;
- import android.content.Context;
- import android.graphics.Color;
- 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 TextHtml extends Activity {
- private TextView tv;
- private static Context ctx;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- tv = new TextView(this);
- ctx = this;
- String htmlLinkText = "我是超链接"+ "<a style=\"color:red;\" href='lianjie'>超链接点击事件</a>";
- // 文字的样式(style)被覆盖,不能改变……
- tv.setText(Html.fromHtml(htmlLinkText));
- tv.setMovementMethod(LinkMovementMethod.getInstance());
- 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_INCLUSIVE);
- }
- tv.setText(style);
- }
- setContentView(tv);
- }
- private static class MyURLSpan extends ClickableSpan {
- private String mUrl;
- MyURLSpan(String url) {
- mUrl = url;
- }
- @Override
- public void onClick(View widget) {
- if(mUrl .equal(lianjie)){
- Toast.makeText(ctx, mUrl, Toast.LENGTH_LONG).show();
- widget.setBackgroundColor(Color.parseColor("#00000000"));
- }
- }
- }
- }
package com.cm; import java.util.ArrayList; import android.R.color; import android.app.Activity; import android.content.Context; import android.graphics.Color; 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 TextHtml extends Activity { private TextView tv; private static Context ctx; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); tv = new TextView(this); ctx = this; String htmlLinkText = "我是超链接"+ "<a style=\"color:red;\" href='lianjie'>超链接点击事件</a>"; // 文字的样式(style)被覆盖,不能改变…… tv.setText(Html.fromHtml(htmlLinkText)); tv.setMovementMethod(LinkMovementMethod.getInstance()); 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_INCLUSIVE); } tv.setText(style); } setContentView(tv); } private static class MyURLSpan extends ClickableSpan { private String mUrl; MyURLSpan(String url) { mUrl = url; } @Override public void onClick(View widget) { if(mUrl .equal(lianjie)){ Toast.makeText(ctx, mUrl, Toast.LENGTH_LONG).show(); widget.setBackgroundColor(Color.parseColor("#00000000")); } } } }
转载于:https://blog.51cto.com/gswxr/719063
转:android TextView中超链接的事件捕捉(textview上LINK的点击事件)相关推荐
- Android 拦截TextView中超链接点击事件
Android 拦截TextView中超链接的点击事件 1.在xml中为TextView添加autoLink属性 <TextView...android:autoLink = "web ...
- 设置TextView中超链接字体颜色、下划线
ClickableSpan:这是超链接相关的样式控制和点击事件的控制类,我们需要对它进行继承,然后修改成我们需要的样式.其中,可以对超链接文本字符进行颜色.字体大小.字体.下划线.点击事件的自定义控制 ...
- uniapp在onLaunch中使用redirectTo或reLaunch跳转页面后点击事件失效
问题描述: 使用uniapp编译成小程序时,在生命周期onLaunch中运用redirectTo或reLaunch跳转页面后点击事件失效,但是如果你重定向的页面中有使用navigator组件跳转后再返 ...
- 关于Echarts柱状图点击事件的实现方法charsjs柱状图点击事件
关于Echarts柱状图点击事件的实现方法 charsjs柱状图点击事件 ajax请求数据 var chartDom = document.getElementById('riskmain'); va ...
- Android中设置RecyclerView的每一个item的单项点击事件
场景 Android中使用Adapter(适配器)给RecycleView设置数据源: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/detail ...
- android app 主界面,android ViewPager实现App主界面Tab菜单页面切换和点击事件
Tabhost实现页面滑动切换比较麻烦,这里介绍一下viewPage 控件. 实现了三屏滑动带标题点击和tab页面内按钮的的点击事件实现: viewPage 的优点是可以滑动切换缺点是MainAct ...
- android studio listview点击事件,android如何响应listview上不同按钮点击事件
参考来源:http://www.tuicool.com/articles/bamqiq 大致思路:重写适配器,让主函数继承接口接口 ListItemClickHelp,这个接口中包含onclick方法 ...
- Android ---------高德卫星地图绘制多个点和点的点击事件自定义弹窗
最近开发中,遇到一个多个点绘制,并实现点击事件,出现自定义窗口显示相关信息等功能,所以写了这篇博客. 从后台请求数据,得到多个经纬度,然后绘制在地图上,并实现点击,出现相关信息(自定义弹框实现) 先来 ...
- android高德地图多个mark点击,Android ---------高德卫星地图绘制多个点和点的点击事件自定义弹窗...
最近开发中,遇到一个多个点绘制,并实现点击事件,出现自定义窗口显示相关信息等功能,所以写了这篇博客. 从后台请求数据,得到多个经纬度,然后绘制在地图上,并实现点击,出现相关信息(自定义弹框实现) 先来 ...
最新文章
- 我的机器学习入门清单及路线!
- 复旦计算机学院徐老师,复旦大学信息科学与技术学院徐跃东副研究员到课题组访问交流...
- 今天来谈谈Python中的各种排序总结,含实现代码
- spring注解式参数校验
- 电脑亮度多少对眼睛好_鲁大师性能测试多少分算好电脑?
- Java-java.util.concurrent.LinkedBlockingQueue
- ARCGIS知乎上的好文章
- jq真正清空表单数据(亲测 好用)
- 踩坑事件:windows操作系统下的eclipse中编写SparkSQL不能从本地读取或者保存parquet文件
- 游戏开发流程及QA职责
- 数据结构-带头双向循环链表
- 课程设计---宾馆客房管理系统
- 能耗分项计量监测系统在某大型公建中的应用
- 美国大学计算机科学分支,美国大学计算机专业四大分支介绍
- python做一段有意思的代码_Python爬虫入门有意思的小长代码
- 推荐一款自带很好用的桌面便签
- 逆向笔记2(数据宽度_逻辑运算)
- sql/hana批量存入表(每日一总)
- 1、Android概述
- Base64编码的原理及实现(源码)
热门文章
- ios 销毁当前页面重新开启_利用Vue中keep-alive,快速实现页面缓存
- Win11推送如何操作 Windows11推送的详细步骤方法
- 计算机不能代替人类英语,英语作文 谈谈计算机1我们已进入了计算机时代2计算机有许多优点3计算机不能代替人类...
- python画出roc曲线 auc计算逻辑_从scikitlearn(sklearn)的多类数据计算AUC和ROC曲线?...
- 中学生python程序设计大赛_贵州民族大学第一届程序设计大赛圆满举办
- 洛谷——P1739 表达式括号匹配
- js获取当天0点和24点的时间戳
- eigen之eigen中文文档
- halcon——在图形窗口中画坐标系
- 来不及解释!python字符串常用方法大全,先收藏再说