textview不同颜色字体点击事件图片2
来源:互联网 发布:免费网络电视在线直播 编辑:程序博客网 时间:2024/05/14 21:27
spannableString和html实现textview设置不同颜色字体点击事件简单用法点这里
1、SpannableString、SpannableStringBuilder与String的关系
首先SpannableString、SpannableStringBuilder基本上与String差不多,也是用来存储字符串,但它们俩的特殊就在于有一个SetSpan()函数,能给这些存储的String添加各种格式或者称样式(Span),将原来的String以不同的样式显示出来,比如在原来String上加下划线、加背景色、改变字体颜色、用图片把指定的文字给替换掉,等等。所以,总而言之,SpannableString、SpannableStringBuilder与String一样,
首先也是传字符串,但SpannableString、SpannableStringBuilder可以对这些字符串添加额外的样式信息,但String则不行。注意:如果这些额外信息能被所用的方式支持,比如将SpannableString传给TextView;也有对这些额外信息不支持的,比如前一章讲到的Canvas绘制文字,对于不支持的情况,SpannableString和SpannableStringBuilder就是退化为String类型,直接显示原来的String字符串,而不会再显示这些附加的额外信息。
2、SpannableString与SpannableStringBuilder区别 它们的区别在于
SpannableString像一个String一样,构造对象的时候传入一个String,之后再无法更改String的内容,也无法拼接多个
SpannableString;而SpannableStringBuilder则更像是StringBuilder,它可以通过其append()方法来拼接多个String。
3、SetSpan() void setSpan (Object what, int start, int end, int
flags)函数意义:给SpannableString或SpannableStringBuilder特定范围的字符串设定Span样式,可以设置多个(比如同时加上下划线和删除线等),Falg参数标识了当在所标记范围前和标记范围后紧贴着插入新字符时的动作,即是否对新插入的字符应用同样的样式。(这个后面会具体举例说明)
参数说明:
object what :对应的各种Span,后面会提到; int start:开始应用指定Span的位置,索引从0开始 int
end:结束应用指定Span的位置,特效并不包括这个位置。比如如果这里数为3(即第4个字符),第4个字符不会有任何特效。从下面的例子也可以看出来。
int flags:取值有如下四个
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE:前后都不包括,即在指定范围的前面和后面插入新字符都不会应用新样式
Spannable.SPAN_EXCLUSIVE_INCLUSIVE :前面不包括,后面包括。即仅在范围字符的后面插入新字符时会应用新样式
Spannable.SPAN_INCLUSIVE_EXCLUSIVE :前面包括,后面不包括。
Spannable.SPAN_INCLUSIVE_INCLUSIVE :前后都包括。
设置粗体\斜体
SpannableStringBuilder spannableString = new SpannableStringBuilder(); spannableString.append("咿呀咿呀的博客哈哈哈哈哈哈"); //setSpan可多次使用 StyleSpan styleSpan = new StyleSpan(Typeface.BOLD);//粗体 spannableString.setSpan(styleSpan, 0, 3, Spannable.SPAN_EXCLUSIVE_INCLUSIVE); StyleSpan styleSpan2 = new StyleSpan(Typeface.ITALIC);//斜体 spannableString.setSpan(styleSpan2, 3, 6, Spannable.SPAN_EXCLUSIVE_INCLUSIVE); StyleSpan styleSpan3 = new StyleSpan(Typeface.BOLD_ITALIC);//粗斜体 spannableString.setSpan(styleSpan3, 6, 9, Spannable.SPAN_EXCLUSIVE_INCLUSIVE); ((TextView)findViewById(R.id.mode5)).setText(spannableString);
设置下划线
SpannableStringBuilder spannableString = new SpannableStringBuilder(); spannableString.append("哈哈哈哈哈哈哈哈哈还"); StrikethroughSpan strikethroughSpan = new StrikethroughSpan(); spannableString.setSpan(strikethroughSpan, 0, 8, Spannable.SPAN_EXCLUSIVE_INCLUSIVE); ((TextView)findViewById(R.id.mode6)).setText(spannableString);`
设置字体大小
/** * 使用SpannableStringBuilder设置样式——字体大小 */private void mode4() { SpannableStringBuilder spannableString = new SpannableStringBuilder(); spannableString.append("哈哈哈哈哈哈哈哈哈哈哈哈"); AbsoluteSizeSpan absoluteSizeSpan = new AbsoluteSizeSpan(20); spannableString.setSpan(absoluteSizeSpan, 0, 8, Spannable.SPAN_EXCLUSIVE_INCLUSIVE); ((TextView)findViewById(R.id.mode4)).setText(spannableString);}
图片
SpannableStringBuilder spannableString = new SpannableStringBuilder(); spannableString.append("哈哈哈哈哈哈哈哈哈哈哈哈"); ImageSpan imageSpan = new ImageSpan(this, R.mipmap.ic_launcher); //也可以这样 //Drawable drawable = getResources().getDrawable(R.mipmap.ic_launcher); //drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); //ImageSpan imageSpan1 = new ImageSpan(drawable); //将index为6、7的字符用图片替代 spannableString.setSpan(imageSpan, 6, 8, Spannable.SPAN_EXCLUSIVE_INCLUSIVE); ((TextView)findViewById(R.id.mode8)).setText(spannableString);
点击事件
SpannableStringBuilder spannableString = new SpannableStringBuilder(); spannableString.append("瞬间爆炸哈哈哈哈好哦"); ClickableSpan clickableSpan = new ClickableSpan() { @Override public void onClick(View view) { Toast.makeText(MainActivity.this, "请不要点我", Toast.LENGTH_SHORT).show(); } }; spannableString.setSpan(clickableSpan, 5, 8, Spannable.SPAN_EXCLUSIVE_INCLUSIVE); TextView textView = (TextView)findViewById(R.id.mode9); textView.setText(spannableString); textView.setMovementMethod(LinkMovementMethod.getInstance());
- textview不同颜色字体点击事件图片2
- 使用SpanableString实现textview部分字体点击事件(不同颜色)
- 让TextView展示不同颜色字体,让局部字体拥有点击事件
- android textview 字体不同颜色
- TextView显示不同颜色字体
- TextView字体设置不同颜色
- TextView中设置不同颜色字体
- TextView分段显示不同颜色,字体
- android TextView、EditText对部分内容设置颜色、字体、超链接、图片、点击事件
- TextView中的文本加效果,如设置不同颜色,大小或点击事件
- android开发中TextView字体显示不同颜色
- 在一个TextView中字体显示不同颜色
- TextView显示不同颜色字体的实现
- 【Android】一个TextView显示不同颜色字体
- Android之TextView设置字体不同颜色大小
- textview设置多种不同的字体颜色和点击事件
- Android TextView 高亮字体并添加点击事件
- Android TextView实现不同字体颜色并添加点击事件
- PHP 的pdf库mPDF6.0基本使用教程
- oracle相关知识
- Android自定义view之圆形进度条
- 部署完ceph出现 osd down情况时的解决方法
- 用maven创建一个简单java工程
- textview不同颜色字体点击事件图片2
- JDBC获取数据库Connection的工具抽取
- 【IMWeb训练营团队作业】
- 润乾(报表展现)获取及处理(集算器)麦杰数据库数据
- Android开发-基础网络组件(1)使用HttpURLConnection登陆-AndroidStudio
- sublimelinter phpfmt php代码语法错误提示 代码缩进整理 插件自动删除没有引用的代码片段,解决办法
- c#反射
- 数组的顺序表示和实现【严蔚敏】
- 1.Java线程基础-Android线程相关