最近现在项目中遇到了一个需求 ,就是部分文字可以点击和改变颜色 ,这其实还是ok的  不是什么变态需求  因为也没有做过   我感觉textview 自己就会有实现此需求的办法   一百度还真有

废话不多说  开始上代码

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

TextView tv = findViewById(R.id.tvContent);

final SpannableStringBuilder style = new SpannableStringBuilder();

//设置文字

style.append("如果你真的喜欢我,请疯狂的点击我把");

//设置部分文字点击事件

ClickableSpan clickableSpan = new ClickableSpan() {

@Override

public void onClick(View widget) {

Toast.makeText(MainActivity.this, "触发点击事件!", Toast.LENGTH_SHORT).show();

}

};

style.setSpan(clickableSpan, 10, 17, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

tv.setText(style);

//设置部分文字颜色

ForegroundColorSpan foregroundColorSpan = new ForegroundColorSpan(Color.parseColor("#0000FF"));

style.setSpan(foregroundColorSpan, 10, 17, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

//配置给TextView

tv.setMovementMethod(LinkMovementMethod.getInstance());

tv.setText(style);

}

}

但是这样写的话确实很快实现了该效果

但是复用性不是很高 而且我现在不知道后台返给我的具体的String是什么  只知道点击的是确定的 所以我有进一步的优化了这个方法

/**

*

* @author 大圣

* @time 2018/10/17 下午3:51

* @param content 全部的文本

* @param str  点击文本

* @param len  点击文本的长度

* @param textView 组件textview

* @param mListeners 接口回调

* @param type  分辨是哪个

*/

private void callService(String content, String str,int len , TextView textView ,final MyDialogListener mListeners ,final int type) {

SpannableStringBuilder builder =new SpannableStringBuilder(content);

int i = content.indexOf(str);//截取文字开始的下标

builder.setSpan(new ClickableSpan() {

@Override

public void onClick(View widget) {

//点击后的操作

if (type ==1) {

mListeners.onClicktoH5();

}

if (type ==2) {

mListeners.onClicktoMy();

}

//                CommonUtils.call(mContext, "12351");

}

@Override

public void updateDrawState(TextPaint ds) {

super.updateDrawState(ds);

ds.setColor(Color.parseColor("#0000FF"));//设置文字颜色

ds.setUnderlineText(true);//设置下划线//根据需要添加

}

}, i, i + len, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

textView.setText(builder);

textView.setMovementMethod(LinkMovementMethod.getInstance());

}

嘻嘻 这个方法是我自己优化过后的  具体的传参注释也有   菜鸟亦可以明白其中的逻辑   也可以根据自己的需求来改  嘻嘻 都半年多没有写博客了   我又开始强势的回归了

android点击改变字体颜色,Android Textview 动态 部分文字点击 改变颜色相关推荐

  1. android中弹出消息字体设置,Android如何设置中粗字体——自定义textview

    最近UI出了一版新的UI效果图,里面的标题用的都是中粗字体.这个中粗字体对于ios来说是很容易的,因为ios本省就自带中粗字体,但是对于安卓来说就没那么简单了,因为安卓中的textview只有标准字体 ...

  2. android手机可以换字体吗,Android手机字体随意换-字体管家

    字体管家是一款小巧,方便的手机字体更改软件,集成了几十款中文美化字体,有可爱字体.华康少女字体.萝莉字体等多种字体,均已经过测试,只需要点击几下可实现字体更改. 不管是webos还是Android都可 ...

  3. Android加载自定义字体出错,Android设置自定义字体的解决方案

    找了很多解决方案,但是都会报错,只好边借鉴着前辈们的思路,边自己尝试改代码了QWQ 前面准备:要先把使用的字体文件放入到工具中 新建一个名叫assets的文件夹,然后把字体文件复制到里面,如图 成功放 ...

  4. android 5.0 按钮颜色,Android 5.0系统默认颜色

    伴随着 Android5.0 的发布也更新了support-v7-appcompat 到 V21,其中增加了 ToolBar.recyclerview.cardview 等控件. Android5.0 ...

  5. android 字体代码是什么字体,Android上的CSS字体

    我正在使用@ font-face在网站上显示联盟哥特式,但它并没有显示在 Android 1.6上.这是我的代码,生成与 Font Squirrel's @font-face generator @f ...

  6. android textview改变部分文字的颜色和string.xml中文字的替换及部分内容设置颜色、字体、超链接、图片...

    一:TextView组件改变部分文字的颜色: 1.TextView textView = (TextView)findViewById(R.id.textview); 2. 3.//方法一: 4.te ...

  7. Android TextView中的文字通过SpannableString,设置不同的颜色,字体,不同文字段的点击事件

    SpannableString其实和String一样,都是一种字符串类型,SpannableString可以直接作为TextView的显示文本,不同的是SpannableString可以通过使用其方法 ...

  8. android字体颜色黑色,Android中颜色选择器和改变字体颜色的实例教程

    1.构建一张七彩图: 我们经常看到这种样子的颜色选择器吧.. 然后其实右边的亮度选择是: 这样我们的代码就可以进行啦... // 创建七彩图片 private void init() { int[] ...

  9. android切换字体颜色,Android开发实现按钮点击切换背景并修改文字颜色的方法

    本文实例讲述了Android开发实现按钮点击切换背景并修改文字颜色的方法.分享给大家供大家参考,具体如下: 其实原理很简单,用到的是selector,用来设置android:background和an ...

  10. Android实现连续并排的若干个TextView单击改变背景颜色达到选项卡Tab栏切换效果...

    <Android实现连续并排的若干个TextView单击改变背景颜色达到选项卡Tab栏切换效果> 实现的组件交互目的很简单,就是要达到类似tab选项卡的导航栏一样,当用户点击了连续并排的若 ...

最新文章

  1. 企业级虚拟机管理——虚拟机安装自动化
  2. [导入]注意!玩具也能成危险
  3. 线程池的使用(线程池重点解析)
  4. VS Code Remote,在服务器上开发程序,开启全新开发模式
  5. 垃圾邮件分类快速理解机器学习中的朴素贝叶斯(Naive Bayes)
  6. 8uftp如何创建php,从零搭建php环境-php8
  7. 商丘高中计算机考试成绩查询系统,2019商丘中考招生成绩查询时间及网站公布...
  8. Office基础和计算机操作基础的知识点(一)
  9. 前端学习(1311):请求报文
  10. C++/C--vector初始化与赋值【转载】
  11. Python_模块Module
  12. 华为云大数据轻模式体验:忘掉底层烦恼,专注数据开发
  13. js面试题:创建一个json对象people,并追加属性:姓名、性别、年龄,追加run方法...
  14. SQLServer 与 MySQL
  15. 【DSP开发】解读TI的KeyStone II云技术应用
  16. 深度学习实战案例:新闻文本分类
  17. 中国城市电话区号对照表,不包括台湾
  18. 腾讯的用Flash调用图片轮显
  19. 2020.7.18 T3Ocd(jz暑假训练day4)
  20. 判断处理器是大端模式还是小端模式

热门文章

  1. ubuntu14.04 配置C/C++开发IDE
  2. status函数(自学数据结构第一天)
  3. 一文解决样本不均衡(全)
  4. 终于有人把深度学习讲明白了!
  5. 20165208 2017-2018-2 《Java程序设计》第九周学习总结
  6. oracle12c新特点之可插拔数据库(Pluggable Database,PDB)
  7. Maven的pom.xml文件详解
  8. JavaSE--RMI初识
  9. Sublime 3 如何使用列编辑模式
  10. 如果需要一个图形学算法