Android(安卓)TextView中文本点击文字跳转
在Android当中,用TextView控件来显示文字,实现它的事件来跳转。
例如微博话题 提到的人,当点击这些文本时会跳到另外一个页面或指定的某个网页
1、创建我们自己的一个clickspan子类
private onTextViewClickListener mListener;
@Override
public void onClick(View arg0) {
mListener.clickTextView();
}
public weiboclickspan(onTextViewClickListener listener) {
this.mListener = listener;
}
@Override
public void updateDrawState(TextPaint ds) {
mListener.setStyle(ds);
}
}
2、实现WeiboContentTestActivity
public class WeiboContentTestActivity extends Activity {
private static final String CONTENT = "#HELLO# aaaaa啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊";
// private static final String CONTENT =
// "#HELLO# aaaaa啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊!!! @world";
private static final Pattern topicPattern = Pattern.compile("#\\w+#");
// private static final Pattern nickPattern=Pattern.compile("@\\w+");
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView mTv = (TextView) findViewById(R.id.tv1);
mTv.setText(CONTENT);
SpannableString ss = new SpannableString(mTv.getText());
setkeywordClickable(mTv, ss, topicPattern, new weiboclickspan(
new onTextViewClickListener() {
@Override
public void clickTextView() {
Intent it = new Intent(Intent.ACTION_VIEW);
it.setData(Uri.parse("http://www.baidu.com"));
startActivity(it);
}
@Override
public void setStyle(TextPaint ds) {
ds.setColor(Color.BLUE);// 颜色
ds.setUnderlineText(false);// 是否有下划线
}
}));
}
// 设置某个具体关键字被点击
public void setkeywordClickable(TextView tv, SpannableString ss,
Pattern pt, ClickableSpan cs) {
Matcher mc = pt.matcher(ss.toString());
while (mc.find()) {
String key = mc.group();
if (!"".equals(key)) {
int start = ss.toString().indexOf(key);
int end = start + key.length();
setClickTextView(tv, ss, start, end, cs);
}
}
}
// 设置textview中的字段可点击
public void setClickTextView(TextView tv, SpannableString ss, int start,
int end, ClickableSpan cs) {
ss.setSpan(cs, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.setText(ss);
tv.setMovementMethod(LinkMovementMethod.getInstance());
}
public interface onTextViewClickListener {
public void clickTextView();
public void setStyle(TextPaint ds);
}
}
更多相关文章
- Decompiled .class file,bytecode version:52.0(Java 8) Source
- invisible visible gone
- android混淆与反射
- 启动uiautomatorviewer后,点击获取模拟器的时候,出现Unable to con
- android 动态设置控件的高度,使用对应布局中的dp值
- Android透明度的设置(transparent translucent)
- Android(安卓)List Background and item Background
- (Android学习之路)Android中listView结合自定义适配器,并实现item
- Android之PopupWindow+ListView+在item顶部底部跳跃