转载: http://blog.csdn.net/ah200614435/article/details/7914455
package com.maizi.activity;
import com.maizi.demo.R;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.method.LinkMovementMethod;
import android.text.style.BackgroundColorSpan;
import android.text.style.ClickableSpan;
import android.text.style.ForegroundColorSpan;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
public class TextViewJump2Activity extends Activity implements OnClickListener {
private TextView mClickableText;
private String msg;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout layout = new LinearLayout(this);
mClickableText = new TextView(this);
mClickableText.setClickable(true);
mClickableText.setTextSize(20);
layout.addView(mClickableText);
setContentView(layout);
SpannableString spanableInfo = new SpannableString(
"This is a test, Click Here!");
int start = 16;
int end = spanableInfo.length();
// 链接操作
spanableInfo.setSpan(new Clickable(this, "test_one"), start, end,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
spanableInfo.setSpan(new ForegroundColorSpan(Color.RED), start, end,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); // 红色高亮
spanableInfo.setSpan(new Clickable(this, "test_two"), 0, 2,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
spanableInfo.setSpan(new ForegroundColorSpan(Color.RED), 0, 2,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); // 红色高亮
mClickableText.setText(spanableInfo);
mClickableText.setMovementMethod(LinkMovementMethod.getInstance());
}
@Override
public void onClick(View v) {
Toast.makeText(TextViewJump2Activity.this,"Click Success-----" + (String) v.getTag(), Toast.LENGTH_SHORT).show();
}
}
class Clickable extends ClickableSpan implements OnClickListener {
private final View.OnClickListener mListener;
private String str;
public Clickable(View.OnClickListener mListener, String str) {
this.mListener = mListener;
this.str = str;
}
@Override
public void onClick(View v) {
// 知道点击的是那一个值
v.setTag(this.str);
mListener.onClick(v);
}
}