给TextView中指定的字符添加点击事件
来源:互联网 发布:口袋妖怪mac 金手指 编辑:程序博客网 时间:2024/06/06 03:00
一 、需求分析
如下图:登陆界面有一个文字说明,其中 Service Terms 和 Privacy Policy 两个词需要高亮显示,且要求点击之后进入相应的页面。
首先我想到的是对Service Terms 和 Privacy Policy 使用不同的TextView,但是这样布局非常麻烦,且需要使用多个TextView,而且对于不同分辨率的手机可能无法完美适配。那么,如果使用一个TextView能不能实现需求呢,我已经知道TextView可以支持改变指定字符的颜色,那么能不能支持给指定字符添加点击事件呢? 在网上查了一下,还真能。
二、 关键代码
那么就简单粗暴地直接上代码好了。
private void setServicePolicy(){ String itemStr = tvLoginPolicy.getText().toString(); String serviceStr = "Service Terms"; String policyStr = "Privacy Policy"; int indexService = itemStr.indexOf(serviceStr); int indexPolicy = itemStr.indexOf(policyStr); SpannableString spannableString = new SpannableString(itemStr); //Service Terms 颜色和点击事件 spannableString.setSpan(new ClickableSpan() { @Override public void onClick(View view) { LogDebugUtil.e(TAG, "clicked Service Terms"); } @Override public void updateDrawState(TextPaint ds) { ds.setColor(Color.BLACK); ds.setUnderlineText(true); } }, indexService, indexService + serviceStr.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //Privacy Policy 颜色和点击事件 spannableString.setSpan(new ClickableSpan() { @Override public void onClick(View view) { LogDebugUtil.e(TAG, "clicked Privacy Policy"); } @Override public void updateDrawState(TextPaint ds) { ds.setColor(Color.BLACK); ds.setUnderlineText(true); } }, indexPolicy, indexPolicy + policyStr.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); tvLoginPolicy.setText(spannableString); tvLoginPolicy.setMovementMethod(LinkMovementMethod.getInstance()); }
- 这段代码字符串直接写在了代码里,但不建议这样写,指定字符串最好放在资源文件里再通过代码获取,这里只是为了展示。
- 在 updateDrawState 方法里可以设置字符的颜色,以及是否需要下划线。对于可点击字符,最好加上下划线,不然用户可能不知道哪里可以点击。
- 最后一句代码 tvLoginPolicy.setMovementMethod(LinkMovementMethod.getInstance()) 必须添加,不然字符无法响应点击事件。
阅读全文
0 0
- 给TextView中指定的字符添加点击事件
- Android TextView 给文本中指定片段添加自定义点击事件
- 给TextView添加点击事件的写法
- 给TextView添加点击事件
- Android开发给TextView添加点击事件
- Android开发给TextView添加点击事件
- Android给TextView添加点击事件
- Android 给TextView添加点击事件
- TextView如何给其中的某一段文字添加点击事件?
- 富文本的使用之一 给TextView部分字段添加点击事件
- 查询文件中指定字符的记录
- 去除字符串中指定字符的方法
- 删除串中指定的字符
- 查找字符串中指定字符的个数
- 删除字符串中指定位置的字符
- 删除字符串中指定位置的字符
- 删除字串中指定的字符
- 删除字符串中指定的字符
- 求10 个整数中最大值
- 欢迎使用CSDN-markdown编辑器
- python---链表反转
- Mybatis Oracle批量操作
- 欢迎使用CSDN-markdown编辑器
- 给TextView中指定的字符添加点击事件
- Linux下LCD 10分钟黑屏解决
- acA4112-8gc
- 面向对象的特征--封装
- java中native关键字
- Android架构思考(模块化、多进程)
- OpenCV-001:读取图片并显示
- 【opencv】轮廓高斯滤波平滑
- 你的抑郁,我来倾听