android给部分文字添加下滑线, 点击功能
项目中遇到需要给一段方案中的几个字加下滑线,并且点击这几个文字,跳转到另一个页面的功能。
不多说了,直接上代码。
第一步,创建工具类。 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给部分文字添加下滑线, 点击功能相关推荐
- android textView 替文字添加下划线 删除线
android textView 替文字添加下划线 删除线 方法1: tv=(TextView)findViewById(R.id.tv); tv.getPaint().setFlags(Paint. ...
- word如何添加下滑线
1.选中添加下滑线的文字,点击如图位置: 2.选中空格部分,点击如上图位置: 延长下滑线长度:光标移至下划线,需要延长的位置,按住空格 实现效果: 转载于:https://www.cnblogs.co ...
- 为文字添加下划线和中划线
Android开发中如何给文字添加下划线和中划线呢,先看一下效果图: 下划线: 中划线: 方式一: //添加下划线 // textView.getPaint().setFlags(Paint.UNDE ...
- speedoffice(Word)如何给文字添加下划线
我们有时在制作文件时,需要对某些文字添加下划线,speedoffice(Word)如何给文字添加下划线呢?看看小编是怎么操作的吧 首先,选中需要添加下划线的文字,如图: 接着,在"主页&qu ...
- ios 按钮下面加下划线_如何在iOS按钮上的文字添加下划线
在开发ios的时候很多用户们都会想如何在iOS按钮上的文字添加下划线,那么接下来的内容中我们就一起去看看在iOS按钮上的文字添加下划线的方法. 问题:实现下图中右侧的按钮文字效果 方法: [MyToo ...
- html怎么设置下划线形状,科技常识:CSS如何给文字添加下划线样式
今天小编跟大家讲解下有关CSS如何给文字添加下划线样式 ,相信小伙伴们对这个话题应该有所关注吧,小编也收集到了有关CSS如何给文字添加下划线样式 的相关资料,希望小伙伴们看了有所帮助. 在css中可以 ...
- div html 下边加横线_CSS如何给文字添加下划线样式?
在CSS中可以使用text-decoration属性或border-bottom属性来给文字添加下划线样式.下面本篇文章就来给大家介绍一下,希望对大家有所帮助. 方法1:使用text-decorati ...
- speedoffice怎么在PPT里面给某些文字添加下划线
怎么在PPT文件里面给文字添加下划线呢?看看小编是怎么操作的吧. 首先,选择需要添加下划线的文字,如图: 接着,在"主页"菜单栏里面找到"下划线"工具,如图: ...
- a标签去下划线或文字添加下修饰_HTML标签:字体标签和超链接
本文主要内容 字体标签 特殊字符(转义字符) :空格 (non-breaking spacing,不断打空格) <:小于号(less than) >:大于号(greater than) ...
最新文章
- Web Api单元测试写法
- 武汉大学2010年数学分析试题解答
- 安装python sklearn经验总结
- alv 刷新_钜献 | 60小时刷新你的雅思托福成绩!明早9点我们要搞事情了!
- 奥斯汀大学计算机专业怎么样,美国德州大学奥斯汀分校与加拿大ubc大学电子计算机专业哪个好...
- linux性能评估-内存基础理解篇
- Linux查看机器的硬件信息
- 四则运算 python
- css3径向渐变背景,CSS3的背景渐变gradient
- 【笔记】工具 - 输入法 - rime 小狼毫(weasel)
- Mysql索引失效的几种情况总结
- 详解网关和路由器的区别
- 资产初探:理财直接融资工具
- 最常用的抖音直播话术大全,新手主播快收藏
- 留着以后慢慢做的计算几何(题表)
- 访问weblogic控制台报错的问题处理
- 100集华为HCIE安全培训视频教材整理 | Agile Controller终端安全管理特性(七)
- Flex元素自适应布局
- [STL]set存储pair并自定义排序
- 漫画 | 程序员,你得一条道走到黑!