TextView useInfo = (TextView) findViewById(R.id.info);
String url_text = "用户协议及隐私条款";
useInfo.setText("开始即表示您同意遵守");
SpannableString spStr = new SpannableString(url_text);
spStr.setSpan(new ClickableSpan() {
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setColor(Color.WHITE);
//设置文字颜色
ds.setUnderlineText(true);
//设置下划线,默认有下划线
}@Override
public void onClick(View widget) {
Log.d("", "onTextClick........");
}
}, 0, url_text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//设置点击后的背景颜色为透明,否则会一直出现高亮(需要在代码里设置,xml里设置有时无效)
useInfo.setHighlightColor(Color.TRANSPARENT);
useInfo.append(spStr);
useInfo.setMovementMethod(LinkMovementMethod.getInstance());
//开始响应点击事件
如果还需为文字设置点击的selector效果,可在xml中为该TextView添加属性:
android:textColorLink="@drawable/selector_textcolor"
【SpannableString之ClickableSpan笔记】在 setSpan() 时需要指定 flag,它是用来标识在 Span 范围内的文本前后输入新的字符时是否对它们也应用这个效果。分别有:
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE(前后都不包括)
Spanned.SPAN_INCLUSIVE_EXCLUSIVE(前面包括,后面不包括)
Spanned.SPAN_EXCLUSIVE_INCLUSIVE(前面不包括,后面包括)
Spanned.SPAN_INCLUSIVE_INCLUSIVE(前后都包括)
看个截图就更明白了:
文章图片
对比一下
文章图片
推荐阅读
- Android|android属性之noHistory
- 程序员|【Android中高级面试跳槽】4年Android经验跳槽大厂,总包年均42w面筋分享
- Android开发|Android与Unity通信的SDK(一)
- Android开发|Flutter 2.10 正式发布,包含 Windows 平台正式版,快来看看有什么新内容
- 从零开发一个完整的Android项目(九)——图片浏览
- Android开发|ViewPager自适应高度问题
- Android|Android 指定销毁一个Activity
- 【Android】简单图片浏览器
- 理解ButterKnife(自动生成绑定资源的代码)