在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);
  }
 }

TextView 中添加超链接的更多相关文章

  1. android中用Spannable在TextView中设置超链接、颜色、字体

    昨晚研读 ApiDemo 源码至 com.example.android.apis.text.Link 类.首先,看一下其运行效果:  要给 TextView 加上效果,方式主要有几种: 第一种,自动 ...

  2. django web 中添加超链接

    django web 中添加不传参的超链接的方法如下: html: 在web中的超链接中加入一下url <a href="{% url 'app_name.views.url_func ...

  3. Java 在PDF 中添加超链接

    对特定元素添加超链接后,用户可以通过点击被链接的元素来激活这些链接,通常在被链接的元素下带有下划线或者以不同的颜色显示来进行区分.按照使用对象的不同,链接又可以分为:文本超链接,图像超链接,E-mai ...

  4. C#在excel中添加超链接

    1.新建一个项目 2.给项目添加引用:Microsoft Excel 12.0 Object Library (2007版本) using Excel = Microsoft.Office.Inter ...

  5. VUE-001-在表格单元格(el-table-column)中添加超链接访问

    在进行前端网页开发时,通常列表数据我们使用table展示.那么如何在 el-table-column 单元格中使用超链接呢? 如下即是解决方式的一种: 仅需要将如下代码: <el-table-c ...

  6. 在RichTextBox控件中添加超链接文本

    实现效果: 知识运用: RichTextBox控件的AppendText方法 public void AppendText{string textData} //向控件中添加文本内容 和Process ...

  7. Android 为 TextView 添加超链接 (网址,邮件,电话)

    <string name="info">Cette application a été développée par <a href="http://w ...

  8. TextView中超链接拦截

    TextView中的超链接点击时,其实是通过Intent方式的,因此会调用Activity中的startActivity(Intent intent)方法,所以可在此方法中做些简单的拦截操作 例如拦截 ...

  9. Android开发:TextView添加超链接的简便方法

    TextView中加入超链接的方式很多,但下面的方式应该的最简便合理的 strings.xml中定义字串 <string name="blog"><a href= ...

随机推荐

  1. UIlabel 属性text

    UILabel *pLabel = [[UILabel alloc] initWithFrame:CGRectMake(0,100,200,100)]; pLabel.text = @"测试 ...

  2. having()方法设置查询条件,where()设置查询条件

    having  和 where区别 ① 使用有先后顺序 ② where  price>100     having price>100 ③ where  设置条件,字段必须是数据表中存在的 ...

  3. codeforces 446B(优先队列)

    题目链接:http://codeforces.com/problemset/problem/446/B #include<bits/stdc++.h> using namespace st ...

  4. block的语法

    主要内容: 1. 开始使用block(Getting Started with Blocks) 2. block概念综述(Conceptual Overview) 3. 声明和创建block(Decl ...

  5. 引用计数gc机制使用不当导致内存泄漏

    上一篇文章找同事review了一下,收到的反馈是铺垫太长了,我尽量直入正题,哈哈 最近dbd压测时发现内存泄漏,其实这个问题去年已经暴露了,参见这篇博客[压测周].当时排查不够仔细,在此检讨下.关于d ...

  6. JSP 数据库连接类 MySql数据库

    数据库连接类的主要功能是连接数据库并且获得连接对象,以及关闭数据库.通过创建该类的实例,调用其中的方法,以避免重复操作. package chapter13; import java.sql.*; p ...

  7. Java-->打包发送信息(UDP协议)

    --> 好像UDP 协议没有TCP 协议应用得那么广泛 --> UdpSender 类定义一个发送端(快递公司) package com.dragon.java.udpdatagram; ...

  8. Angularjs中的promise

    promise 是一种用异步方式处理值的方法,promise是对象,代表了一个函数最终可能的返回值或抛出的异常.在与远程对象打交道非常有用,可以把它们看成一个远程对象的代理. 要在Angular中创建 ...

  9. XML实体注入漏洞

    XML实体注入漏洞 测试代码1: 新建xmlget.php,复制下面代码 <?php $xml=$_GET['xml']; $data = simplexml_load_string($xml) ...

  10. UVa 156 (映射 map)

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...