TextView 中添加超链接
2024-10-15 03:49:07
在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+="百度一下";//注意这里必须加上协议号,即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不仅 识别超链接,包括电话号码之类的。
第三种
同一个TextView控件中有多处需要点击,并且点击后跳转到不同的位置
1、
SpannableString spanableInfo = new SpannableString(
"点击确认即表示您同意并签署《管理服务协议》及《风险提示书》");
int firsStar = spanableInfo.toString().indexOf("《");
int firstEnd = spanableInfo.toString().indexOf("》");
int end = spanableInfo.length();
// 1-管理服务协议页面; 2-金风险提示书页面
spanableInfo.setSpan(new Clickable( 1), firsStar, firstEnd,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
spanableInfo.setSpan(new Clickable(2), firstEnd + 2, end,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
tvZybInputDesc.setText(spanableInfo);
"点击确认即表示您同意并签署《管理服务协议》及《风险提示书》");
int firsStar = spanableInfo.toString().indexOf("《");
int firstEnd = spanableInfo.toString().indexOf("》");
int end = spanableInfo.length();
// 1-管理服务协议页面; 2-金风险提示书页面
spanableInfo.setSpan(new Clickable( 1), firsStar, firstEnd,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
spanableInfo.setSpan(new Clickable(2), firstEnd + 2, end,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
tvZybInputDesc.setText(spanableInfo);
//setMovementMethod()该方法必须调用,否则点击事件不响应
tvZybInputDesc.setMovementMethod(LinkMovementMethod.getInstance());
tvZybInputDesc.setMovementMethod(LinkMovementMethod.getInstance());
2、
class Clickable extends ClickableSpan {
// 1-跳转到投资咨询及管理服务协议页面; 2-挑战到投资资金风险提示书页面
private int type;
// 1-跳转到投资咨询及管理服务协议页面; 2-挑战到投资资金风险提示书页面
private int type;
public Clickable(int type) {
super();
this.type = type;
}
super();
this.type = type;
}
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setColor(getResources().getColor(R.color.text_gray_color));
ds.setUnderlineText(false);
}
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setColor(getResources().getColor(R.color.text_gray_color));
ds.setUnderlineText(false);
}
@Override
public void onClick(View v) {
String userId = ConfigTools.getConfigValue(Constants.USER_ID, "");
String token = PageUtils.getTokenUtf8();
Intent sIntent = new Intent(ZybInputActivity.this, SszWebviewActivity.class);
if (type == 1) {
//处理管理服务协议的点击事件
public void onClick(View v) {
String userId = ConfigTools.getConfigValue(Constants.USER_ID, "");
String token = PageUtils.getTokenUtf8();
Intent sIntent = new Intent(ZybInputActivity.this, SszWebviewActivity.class);
if (type == 1) {
//处理管理服务协议的点击事件
} else {
// 处理风险提示书的点击事件
}
startActivity(sIntent);
}
}
// 处理风险提示书的点击事件
}
startActivity(sIntent);
}
}
最新文章
- bzoj1029 [JSOI2007]建筑抢修
- 基于weka的文本分类实现
- struts2.3.15.1 中jsp:include与jsp:forward的用法
- iOS通过http post上传图片 (转)
- 关于IE6幽灵字体
- java把函数作为参数传递
- k近邻算法
- Linux字符设备与块设备的区别与比较
- react高阶组件的使用
- WCF各个Service之间共享数据
- 使用MSF打造各种ShellCode
- TypeScript 之 声明文件的结构
- js ajax 数据获取
- 1.8.1suspend与resume方法使用
- 【Golang】幽灵变量(变量覆盖)问题的一劳永逸解决方法
- C语言俄罗斯方块
- 【UVa】439 Knight Moves(dfs)
- SpaceVim 语言模块 elm
- 使用AutoFac实现依赖注入(封装一个注册类)
- nvm版本管理工具安装
热门文章
- pymongo 3.3 使用笔记
- SDK、MFC、QT界面生成的机制
- React Native组件之Text
- FreeBSD打开DTrace支持
- AJAX部分---对比js做日期的下拉选择 和 ajax做三级联动;
- 【我所理解的Cocos2d-x】第六章 精灵Sprite 读书笔记
- win7 下 arp 绑定mac和Ip
- centos7+nginx 1.9.0+php-fpm+phpstorm+xdebug+vmware开发环境搭建
- ASP.NET 下拉列表绑定枚举类型值,不用再新建一个枚举表
- 基于web的IM软件通信原理分析