您的位置:首页 > 移动开发 > Android开发

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

2013-08-01 17:11 477 查看
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/test_note"
android:autoLink="all />


package com.jayce.testlink;

import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.text.style.ClickableSpan;
import android.text.style.URLSpan;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;

public class TextLinkActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_text_link);
TextView tv = (TextView)findViewById(R.id.test_note);
CharSequence text = tv.getText();
/*
* 以下是textview的内容(这里给了3个示例链接和一个普通字符串)
* 13888888888
* www.google.com
* test@gmail.com
* jaycetest
*/
if (text instanceof Spannable) {
int end = text.length();
Spannable sp = (Spannable) tv.getText();
URLSpan[] spans = sp.getSpans(0, end, URLSpan.class);
SpannableStringBuilder style = new SpannableStringBuilder(text);
style.clearSpans();// should clear old spans
for (URLSpan span : spans) {
JayceSpan mySpan = new JayceSpan(span.getURL());
style.setSpan(mySpan, sp.getSpanStart(span), sp.getSpanEnd(span), Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
}
tv.setText(style);
}
tv.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
/*
* 这里是对所有点击消息的监听
* 可以把链接的做标记剔除后监听非链接的点击
* 比如jaycetest区域的点击
*/
}});
}

private  class JayceSpan extends ClickableSpan {

private String mSpan;

JayceSpan(String span) {
mSpan = span;
}

@Override
public void onClick(View widget) {
Log.e("jayce", "span:" + mSpan);
/*链接被点击
* 这里可以做一些自己定义的操作
*/
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(mSpan));
startActivity(intent);
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: