Spannable支持字符串展示的多样式
来源:互联网 发布:骆驼趾 知乎 编辑:程序博客网 时间:2024/05/22 23:58
一、Spannable的使用
1,修改字体颜色
/** * 第一种设置方式 * * @param tv */ private void changeStyle1(TextView tv) { Spannable helloWorld = new SpannableString("我才知道Spannable可实现String的多样式展示内容");// helloWorld.setSpan(new ForegroundColorSpan(Color.BLUE), 2, 10, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); helloWorld.setSpan(new ForegroundColorSpan(Color.BLUE), 2, 26, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); tv.setText(helloWorld); }
2,修改字体大小
/** * 第二种设置方式 * * @param tv */ private void changeStyle2(TextView tv) { Spannable congFu = new SpannableString("天下武功,无奇不破,唯快不破!"); congFu.setSpan(new AbsoluteSizeSpan(26), 0, 4, Spannable.SPAN_EXCLUSIVE_INCLUSIVE); congFu.setSpan(new AbsoluteSizeSpan(36), 5, 9, Spannable.SPAN_EXCLUSIVE_INCLUSIVE); tv.setText(congFu); }3,样式设置
【样式】
<style name="style1"> <item name="android:textSize">10sp</item> <item name="android:textColor">#00FFFF</item> <item name="android:textStyle">italic</item> </style> <style name="style2"> <item name="android:textSize">10sp</item> <item name="android:textColor">@color/green</item> <item name="android:textStyle">bold</item> </style>【使用】
/** * 第三种设置方式 * * @param tv */ private void changeStyle3(TextView tv) { Spannable renSheng = new SpannableString("生容易,活容易,生活,不容易!");//左右开闭原则 renSheng.setSpan(new TextAppearanceSpan(this, R.style.style1), 0, 3, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//两边打开 renSheng.setSpan(new TextAppearanceSpan(this, R.style.style2), 4, 7, Spanned.SPAN_EXCLUSIVE_INCLUSIVE);//左边不包括,右边包括,","不包括在内 renSheng.setSpan(new TextAppearanceSpan(this, R.style.style1), 8, 10, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); renSheng.setSpan(new TextAppearanceSpan(this, R.style.style2), 11, 14, Spanned.SPAN_INCLUSIVE_INCLUSIVE); tv.setText(renSheng); }展示效果:
二、细节区分
1,接口定义
【Spanned】
该接口定义了很多Flag变量,注意以下几个常用的flag标记,用来标记范围。
SPAN_INCLUSIVE_EXCLUSIVE SPAN_INCLUSIVE_INCLUSIVE SPAN_EXCLUSIVE_EXCLUSIVE SPAN_EXCLUSIVE_INCLUSIVE主要的几个接口,都是用来获取标记范围参数的:
public int getSpanStart(Object tag); public int getSpanEnd(Object tag); public int getSpanFlags(Object tag); public <T> T[] getSpans(int start, int end, Class<T> type);
【Spannable】
该接口继承自Spanned,包含2个接口方法,和一个工厂类。
public void setSpan(Object what, int start, int end, int flags); public void removeSpan(Object what);
2,主要方法
setSpan(Object what, int start, int end, int flags);
start:起始位置,inclusive end:结束位置,exclusive,最终起效果的字符长度为 end-start flags:其主要含义为标识在Span范围内的文本前后输入新的字符时,是否把它们也应用于这个效果。示例:
SPAN_INCLUSIVE_INCLUSIVE效果: <u>Click</u> here to see more. //原始应用效果,在Click下面会有下划线 <u>aClick</u> here to see more. //在Click之前输入一个字符a,则a也会有下划线 <u>aClicka</u> here to see more. //在Click之后输入一个字符a,a也有下划线 SPAN_INCLUSIVE_EXCLUSIVE效果: <u>Click</u> here to see more. <u>aClick</u> here to see more. <u>aClick</u>a here to see more. //在Click之后输入一个字符a,a并没有下划线
<span style="color:#ff0000;">SPAN_EXCLUSIVE_EXCLUSIVE 不包括前面,不包括后面SPAN_EXCLUSIVE_INCLUSIVE 不包括前面,包括后面SPAN_INCLUSIVE_EXCLUSIVE 包括前面,不包括后面SPAN_INCLUSIVE_INCLUSIVE 包括前面,包括后面</span>
富文本编辑源码下载
如果没有人看着我,我该多快乐。
--- 世界是自己的,与其他人无关。
--- 真正的束缚因素 !
---- 超越自己 ~_~
0 0
- Spannable支持字符串展示的多样式
- ListView 条目多样式展示
- bootstrap table实现x-editable的行单元格编辑及解决数据Empty和支持多样式
- 多样式的用户交互对话框
- 多样式cell的排列使用
- UILabel 中文本的多样式显示
- Spannable方法的用法
- Android Spannable的使用
- 多样的sprintf函数
- 多样的排列
- Drawable的多样
- Spannable
- Spannable
- Spannable
- Android官方开发文档Training系列课程中文版:多样屏幕之支持不同的屏幕尺寸
- Android官方开发文档Training系列课程中文版:多样屏幕之支持不同的屏幕密度
- jquery定义多样式
- FlycoDialog_Master多样式对话框
- javaScropt作用域
- iOS 10 获得访问系统 camera、照片库、麦克风、日历等 权限问题
- 大型网站架构技能图谱(Java版)
- spring和mybatis整合01
- 美团多渠道打包方案初体验
- Spannable支持字符串展示的多样式
- Android 移动存储---SQLite
- JAVA线程同步wait()和notify()讲解
- 透明Activity
- java.lang.IllegalStateException: Could not find method onClickcrea(View) in a parent or ancestor Con
- I()函数分析
- net.sf.json.JSONException: java.lang.NoSuchMethodException
- 进程间通信笔记(5)—互斥锁和条件变量
- yii2 批量添加数组数据