Android(安卓)在TextView中加入多个点击文本区域
16lz
2022-03-28
Android做注册功能或者其他功能时,一般会需要在一个TextView中,加入多个可以点击的区域,例如下图中的《用户协议》和《隐私政策》,需要有点击事件:
很多人会做多个Textview拼接起来,这样其实很麻烦,其实使用一个Android 自带的功能就可以做了。如下:
// 一个图标,即在文本最前面加一个图标// ImageSpan span = new ImageSpan(mContext, null);// SpannableString spanStr = new SpannableString("p.");// spanStr.setSpan(span, 0, 1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);// SpannableStringBuilder ssb = new SpannableStringBuilder(spanStr);String str = "注册即代表已阅读并遵循《用户协议》和《隐私政策》"; SpannableStringBuilder ssb = new SpannableStringBuilder(); ssb.append(str); final int start = str.indexOf("《");//第一个出现的位置 ssb.setSpan(new ClickableSpan() { @Override public void onClick(View widget) { Toast.makeText(mContext, "《用户协议》", Toast.LENGTH_SHORT).show(); } @Override public void updateDrawState(TextPaint ds) { super.updateDrawState(ds); ds.setColor(getResources().getColor(R.color.text_click_blue)); //设置文件颜色 // 去掉下划线 ds.setUnderlineText(false); } }, start, start + 6, 0); final int end = str.lastIndexOf("《");//最后一个出现的位置 ssb.setSpan(new ClickableSpan() { @Override public void onClick(View widget) { Toast.makeText(mContext, "《隐私政策》", Toast.LENGTH_SHORT).show(); } @Override public void updateDrawState(TextPaint ds) { super.updateDrawState(ds); ds.setColor(getResources().getColor(R.color.text_click_blue)); //设置文件颜色 // 去掉下划线 ds.setUnderlineText(false); } }, end, end + 6, 0); textview.setMovementMethod(LinkMovementMethod.getInstance()); textview.setText(ssb, TextView.BufferType.SPANNABLE);
就能实现上图中的功能。
更多相关文章
- Android实现语音识别
- android开发笔记之2012版辅助开发工具包(ADT)新功能特性介绍及安装
- 2012版辅助开发工具包(ADT)新功能特性介绍及安装使用
- OpenCore 的代码结构
- Android使用MediaRecorder实现录音功能相关知识
- android 自动登录功能的实现
- Android(安卓)系统下模拟触点击的功能与权限
- 基于Android的WiFi对讲机项目简介
- [置顶] Android(安卓)实现对话框圆角功能