项目中遇到需要给一段方案中的几个字加下滑线,并且点击这几个文字,跳转到另一个页面的功能。

不多说了,直接上代码。

第一步,创建工具类。 TextViewSpannableUtils.java

public class TextViewSpannableUtils {private static ClickableSpanCallBack mClickableSpanCallBack;public TextViewSpannableUtils() {}/*****  1. 给部分文字加超链接功能,*  2. 给部分文字添加下滑线, 点击功能*  3. 设置文字高亮*  4. 给部分文字设置背景色* @param  content:文字内容。   keyWord :关键字,要加下滑线的几个字。  resColorID: 要给这几个字设置的颜色。
textView  布局控件。*/public static void setSpannable(String content,String keyWord , int resColorID, TextView textView) {
//        SpannableStringBuilder builder = new SpannableStringBuilder(content);
//        int start = content.indexOf("免责声明");//截取文字开始的下标int start = content.indexOf(keyWord);//截取文字开始的下标int totalLength = content.length();LogUtils.e("setSpannable ------------- start: " + start);LogUtils.e("setSpannable ------------- totalLength: " + totalLength);if (start<0){if (StringUtils.isNotBlank(content)){textView.setText(content);}else {textView.setText("");}return;}//创建一个 SpannableString对象
//        SpannableString sp = new SpannableString("这句话中有百度超链接,有高亮显示,这样,或者这样,还有斜体.");SpannableString sp = new SpannableString(content);// 关键字点击事件sp.setSpan(new ClickableSpan() {@Overridepublic void onClick(View widget) {//点击后的操作LogUtils.e("setSpannable 点击后的操作 -------------");if (mClickableSpanCallBack != null){mClickableSpanCallBack.onClick();}}}, start, totalLength, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//设置超链接
//        sp.setSpan(new URLSpan("http://www.baidu.com"), 5, 7,  Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//设置高亮样式一
//        sp.setSpan(new BackgroundColorSpan(Color.RED), 17 ,19, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);//设置字体背景高亮样式二
//        sp.setSpan(new ForegroundColorSpan(Color.YELLOW),20,24,Spannable.SPAN_EXCLUSIVE_INCLUSIVE);// 设置下滑线sp.setSpan(new StyleSpan( Paint.UNDERLINE_TEXT_FLAG),start ,totalLength,Spannable.SPAN_EXCLUSIVE_INCLUSIVE);//设置字体高亮样式二
//        sp.setSpan(new ForegroundColorSpan(MyApplication.getContext().getResources().getColor(R.color.color_333333) ),
//        sp.setSpan(new ForegroundColorSpan(Color.BLACK ),  start,totalLength,Spannable.SPAN_EXCLUSIVE_INCLUSIVE);//设置字体前景色    Color.MAGENTA  洋红色
//        sp.setSpan(new ForegroundColorSpan(Color.BLACK), start, totalLength, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//设置斜体
//        sp.setSpan(new StyleSpan(android.graphics.Typeface.BOLD_ITALIC), 27, 29, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);//设置字体前景色    Color.MAGENTA  洋红色    color_1A66D0   R.color.color_2982FFsp.setSpan(new ForegroundColorSpan(  resColorID), start, totalLength, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//        sp.setSpan(new ForegroundColorSpan(Color.BLACK), start, totalLength, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//        sp.setSpan(new ForegroundColorSpan(MyApplication.getContext().getResources().getColor(R.color.color_1A66D0)),
//                start, totalLength, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//SpannableString对象设置给TextViewtextView.setText(sp);//设置TextView可点击textView.setMovementMethod(LinkMovementMethod.getInstance());}public void setClickableSpanCallBack(ClickableSpanCallBack clickableSpanCallBack) {this.mClickableSpanCallBack = clickableSpanCallBack;}public interface ClickableSpanCallBack{void onClick();}
}

第二步、 写布局文件,就是普通的 TextView布局。

<TextViewandroid:id="@+id/self_diagnosis_result_disclaimer_TV"android:layout_width="wrap_content"android:layout_height="wrap_content"android:padding="15dp"android:layout_gravity="right"android:textSize="17sp"android:textColor="@color/color_333333"android:text="免责声明"/>

第三步、 在代码中调用工具类。

    private void initView() {mDisclaimerTV = mActivity.findViewById(R.id.self_diagnosis_result_disclaimer_TV);           // 免责声明按钮TextViewSpannableUtils spannableUtils = new TextViewSpannableUtils();spannableUtils.setClickableSpanCallBack(mClickableSpanCallBack);
//        spannableUtils.setSpannable("1.通过医学知识库人体各系统综合诊断,您的伴有症状与之匹配越多,排列越靠前,患有该疾病的可能性越大。\n" +
//                "2.自诊结果仅供参考,详情请咨询医生,若病情反复或加重,请及时就医! 免责声明" , "免责声明" , mDisclaimerTV);spannableUtils.setSpannable(mActivity.getString(R.string.self_diagnosis_result_Disclaimer_text)+ mActivity.getString(R.string.self_diagnosis_result_Disclaimer_text_keyword)  ,mActivity.getString(R.string.self_diagnosis_result_Disclaimer_text_keyword) ,mActivity.getResources().getColor(R.color.color_2982FF),mDisclaimerTV);setResultUIData();}private TextViewSpannableUtils.ClickableSpanCallBack mClickableSpanCallBack= new TextViewSpannableUtils.ClickableSpanCallBack() {@Overridepublic void onClick() {LogUtils.e("免责声明 点击后的操作 -------------");new StartActivityUtils(DisclaimerWebViewActivity.class);   // 免责声明 页面}};

第四步、运行一下吧,很简单的步骤。

关注公众号,了解更多精选文章吧。

android给部分文字添加下滑线, 点击功能相关推荐

  1. android textView 替文字添加下划线 删除线

    android textView 替文字添加下划线 删除线 方法1: tv=(TextView)findViewById(R.id.tv); tv.getPaint().setFlags(Paint. ...

  2. word如何添加下滑线

    1.选中添加下滑线的文字,点击如图位置: 2.选中空格部分,点击如上图位置: 延长下滑线长度:光标移至下划线,需要延长的位置,按住空格 实现效果: 转载于:https://www.cnblogs.co ...

  3. 为文字添加下划线和中划线

    Android开发中如何给文字添加下划线和中划线呢,先看一下效果图: 下划线: 中划线: 方式一: //添加下划线 // textView.getPaint().setFlags(Paint.UNDE ...

  4. speedoffice(Word)如何给文字添加下划线

    我们有时在制作文件时,需要对某些文字添加下划线,speedoffice(Word)如何给文字添加下划线呢?看看小编是怎么操作的吧 首先,选中需要添加下划线的文字,如图: 接着,在"主页&qu ...

  5. ios 按钮下面加下划线_如何在iOS按钮上的文字添加下划线

    在开发ios的时候很多用户们都会想如何在iOS按钮上的文字添加下划线,那么接下来的内容中我们就一起去看看在iOS按钮上的文字添加下划线的方法. 问题:实现下图中右侧的按钮文字效果 方法: [MyToo ...

  6. html怎么设置下划线形状,科技常识:CSS如何给文字添加下划线样式

    今天小编跟大家讲解下有关CSS如何给文字添加下划线样式 ,相信小伙伴们对这个话题应该有所关注吧,小编也收集到了有关CSS如何给文字添加下划线样式 的相关资料,希望小伙伴们看了有所帮助. 在css中可以 ...

  7. div html 下边加横线_CSS如何给文字添加下划线样式?

    在CSS中可以使用text-decoration属性或border-bottom属性来给文字添加下划线样式.下面本篇文章就来给大家介绍一下,希望对大家有所帮助. 方法1:使用text-decorati ...

  8. speedoffice怎么在PPT里面给某些文字添加下划线

    怎么在PPT文件里面给文字添加下划线呢?看看小编是怎么操作的吧. 首先,选择需要添加下划线的文字,如图: 接着,在"主页"菜单栏里面找到"下划线"工具,如图: ...

  9. a标签去下划线或文字添加下修饰_HTML标签:字体标签和超链接

    本文主要内容 字体标签 特殊字符(转义字符)  :空格 (non-breaking spacing,不断打空格) <:小于号(less than) >:大于号(greater than) ...

最新文章

  1. Web Api单元测试写法
  2. 武汉大学2010年数学分析试题解答
  3. 安装python sklearn经验总结
  4. alv 刷新_钜献 | 60小时刷新你的雅思托福成绩!明早9点我们要搞事情了!
  5. 奥斯汀大学计算机专业怎么样,美国德州大学奥斯汀分校与加拿大ubc大学电子计算机专业哪个好...
  6. linux性能评估-内存基础理解篇
  7. Linux查看机器的硬件信息
  8. 四则运算 python
  9. css3径向渐变背景,CSS3的背景渐变gradient
  10. 【笔记】工具 - 输入法 - rime 小狼毫(weasel)
  11. Mysql索引失效的几种情况总结
  12. 详解网关和路由器的区别
  13. 资产初探:理财直接融资工具
  14. 最常用的抖音直播话术大全,新手主播快收藏
  15. 留着以后慢慢做的计算几何(题表)
  16. 访问weblogic控制台报错的问题处理
  17. 100集华为HCIE安全培训视频教材整理 | Agile Controller终端安全管理特性(七)
  18. Flex元素自适应布局
  19. [STL]set存储pair并自定义排序
  20. 漫画 | 程序员,你得一条道走到黑!

热门文章

  1. 资本寒冬下,哪些创业企业将最先倒下?
  2. 怎么学习-如何去模仿学习?
  3. mysql IS NOT NULL优化案例
  4. oracle impdp使用,Oracle expdp / impdp 用法详解
  5. 畅聊无极限 微微网络电话聊天新玩法
  6. 早安心语:有阴影的地方,必定有光
  7. wan端口未连接怎么弄_wan口未连接,教您怎么解决wan口未连接
  8. 数据库(四)_MySQL索引
  9. C++ 编写二维码(有源码)
  10. 人到中年找不到工作,创业没方向,该怎么办才好?