android textview点击链接,Android TextView中链接(link)点击事件的截取

1 package com.jayce.testlink;

2

3 import android.net.Uri;

4 import android.os.Bundle;

5 import android.app.Activity;

6 import android.content.Intent;

7 import android.text.Spannable;

8 import android.text.SpannableStringBuilder;

9 import android.text.style.ClickableSpan;

10 import android.text.style.URLSpan;

11 import android.util.Log;

12 import android.view.View;

13 import android.view.View.OnClickListener;

14 import android.widget.TextView;

15

16 public class TextLinkActivity extends Activity {

17

18 @Override

19 public void onCreate(Bundle savedInstanceState) {

20 super.onCreate(savedInstanceState);

21 setContentView(R.layout.activity_text_link);

22 TextView tv = (TextView)findViewById(R.id.test_note);

23 CharSequence text = tv.getText();

24 /*

25 * 以下是textview的内容(这里给了3个示例链接和一个普通字符串)

26 * 13888888888

27 * www.google.com

28 * test@gmail.com

29 * jaycetest

30 */

31 if (text instanceof Spannable) {

32 int end = text.length();

33 Spannable sp = (Spannable) tv.getText();

34 URLSpan[] spans = sp.getSpans(0, end, URLSpan.class);

35 SpannableStringBuilder style = new SpannableStringBuilder(text);

36 style.clearSpans();// should clear old spans

37 for (URLSpan span : spans) {

38 JayceSpan mySpan = new JayceSpan(span.getURL());

39 style.setSpan(mySpan, sp.getSpanStart(span), sp.getSpanEnd(span), Spannable.SPAN_EXCLUSIVE_INCLUSIVE);

40 }

41 tv.setText(style);

42 }

43 tv.setOnClickListener(new OnClickListener(){

44

45 @Override

46 public void onClick(View v) {

47 // TODO Auto-generated method stub48 /*

49 * 这里是对所有点击消息的监听

50 * 可以把链接的做标记剔除后监听非链接的点击

51 * 比如jaycetest区域的点击

52 */

53 }});

54 }

55

56 private class JayceSpan extends ClickableSpan {

57

58 private String mSpan;

59

60 JayceSpan(String span) {

61 mSpan = span;

62 }

63

64 @Override

65 public void onClick(View widget) {

66 Log.e("jayce", "span:" + mSpan);

67 /*链接被点击

68 * 这里可以做一些自己定义的操作

69 */

70 Intent intent = new Intent(Intent.ACTION_VIEW);

71 intent.setData(Uri.parse(mSpan));

72 startActivity(intent);

73 }

74 }

75

76 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值