在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);
  //setMovementMethod()该方法必须调用,否则点击事件不响应
  tvZybInputDesc.setMovementMethod(LinkMovementMethod.getInstance());
 
2、
class Clickable extends ClickableSpan {
  // 1-跳转到投资咨询及管理服务协议页面; 2-挑战到投资资金风险提示书页面
  private int type;
  public Clickable(int 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);
  }
  @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) {
    //处理管理服务协议的点击事件
   } else {
    // 处理风险提示书的点击事件
   }
   startActivity(sIntent);
  }
 }

最新文章

  1. bzoj1029 [JSOI2007]建筑抢修
  2. 基于weka的文本分类实现
  3. struts2.3.15.1 中jsp:include与jsp:forward的用法
  4. iOS通过http post上传图片 (转)
  5. 关于IE6幽灵字体
  6. java把函数作为参数传递
  7. k近邻算法
  8. Linux字符设备与块设备的区别与比较
  9. react高阶组件的使用
  10. WCF各个Service之间共享数据
  11. 使用MSF打造各种ShellCode
  12. TypeScript 之 声明文件的结构
  13. js ajax 数据获取
  14. 1.8.1suspend与resume方法使用
  15. 【Golang】幽灵变量(变量覆盖)问题的一劳永逸解决方法
  16. C语言俄罗斯方块
  17. 【UVa】439 Knight Moves(dfs)
  18. SpaceVim 语言模块 elm
  19. 使用AutoFac实现依赖注入(封装一个注册类)
  20. nvm版本管理工具安装

热门文章

  1. pymongo 3.3 使用笔记
  2. SDK、MFC、QT界面生成的机制
  3. React Native组件之Text
  4. FreeBSD打开DTrace支持
  5. AJAX部分---对比js做日期的下拉选择 和 ajax做三级联动;
  6. 【我所理解的Cocos2d-x】第六章 精灵Sprite 读书笔记
  7. win7 下 arp 绑定mac和Ip
  8. centos7+nginx 1.9.0+php-fpm+phpstorm+xdebug+vmware开发环境搭建
  9. ASP.NET 下拉列表绑定枚举类型值,不用再新建一个枚举表
  10. 基于web的IM软件通信原理分析