首页
编程随笔
Java笔记
Html/Css/Js
Android
后端笔记
服务器搭建
BUG收集
Java异常
Android异常
在线工具
Json格式化
编码/解码
Epub在线编辑
登录
发布文章
个人文章
退出登录
首页
技术教程
BUG收集
在线工具
资源下载
登录
发布文章
退出登录
搜索
当前位置:
首页
-
博客
- 正文
关闭
TextView中去使用 SpannableString实现富文本框
更新时间:2022-09-25 09:50:10
阅读数:875
发布者:落幕
### TextView中去使用 SpannableString实现富文本框 #### (1)SpannableString中添加点击事件(ClickableSpan(点击),ImageSpan(图片),BackgroundColorSpan(背景)) ##### 1)设置点击事件 ```java spannableString.setSpan(new ClickableSpan() { @Override public void updateDrawState(TextPaint ds) { /** * 是否有下划线 */ ds.setUnderlineText(false); /** * 橘红色字体 */ ds.setColor (Color.parseColor ("#fe671e")); } @Override public void onClick(final View widget) { ToastUtils.makeText("" + str); Log.i("testtesttes","打印结果为:"+str); } }, 0, str.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); ``` 2)设置到TextView中 ```java /** * 让点击事件生效 */ expandableText.setMovementMethod(LinkMovementMethod.getInstance()); expandableText.setText(mStringBuilder); ``` 只有添加了setMovementMethod(…)才会响应点击事件 ####(2)可以将SpannableString放入SpannableStringBuilder ##### 1)设置指定长度的文本有点击事件 ```java mStringBuilder.setSpan(new ClickableSpan() { @Override public void updateDrawState(TextPaint ds) { /** * 是否有下划线 */ ds.setUnderlineText(false); /* *//** * 橘红色字体 *//* ds.setColor (mNameColor);*/ ds.setColor (Color.parseColor ("#fe671e")); } @Override public void onClick(final View widget) { ToastUtils.makeText("" + tests[0]); Log.i("testtesttes","打印结果为:"+tests[0]); widget.setBackgroundColor(getContext().getResources().getColor(R.color.red_btn_bg_color)); } }, 0, tests[0].length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); ``` 2)设置到TextView中 ```java /** * 让点击事件生效 */ expandableText.setMovementMethod(LinkMovementMethod.getInstance()); expandableText.setText(mStringBuilder); ```