android editable接口,Spannable与Editable区别
在看TextView源码时候又看到了这两个接口:Spannable和Editable;
之前一直没有认真研究过两者的关系,现在看了源码记录下来。
1:两者属于继承关系,Editable继承于Spannable
Editable:
Spannable:
相较于Spannable,Editable还继承了另2个接口:CharSequence,Appendable。 CharSequence大家应该比较熟,看一下Appendable:
由图可见,Appendable这个接口,主要用来向CharSequence 添加/插入新的文本,通过其定义的方法可以看出其作用:
append(CharSequence csq)
append(CharSequence csq, int start, int end)
append(char c)
2:Spannable中主要方法
setSpan(Object what, int start, int end, int flags)
这个方法我们经常用,用于向文本设置/添加新的样式
removeSpan(Object what)
移除指定的样式,作用和setSpan相反
由此可见,Spannable作用是为CharSequence实例设置或者移除指定样式。
2:Editable中主要方法
Editable:
This is the interface for text whose content and markup can be changed: 可见,Editable接口关联的文本,不仅可以标记/设置样式,其内容也可以变化;
3:实际使用总结
如果一段文本,仅仅是样式发生变化,使用Spannable的子类SpannableString即可实现
如果一段文本,样式和内容都要发生变化,则必须使用Editable实例,我们最常用的应该就是SpannableStringBuilder.
调用TextView实例的setText方法时,type使用TextView.BufferType.EDITABLE,可以实现TextView中的文本不断的增加/更新(比如一些场景是需要向TextView实例中不断插入从网络获取的最新数据)
/**
* Sets the text that this TextView is to display (see
* {@link #setText(CharSequence)}) and also sets whether it is stored
* in a styleable/spannable buffer and whether it is editable.
*
* @attr ref android.R.styleable#TextView_text
* @attr ref android.R.styleable#TextView_bufferType
*/
public void setText(CharSequence text, BufferType type) {
setText(text, type, true, 0);
if (mCharWrapper != null) {
mCharWrapper.mChars = null;
}
}
示例代码:
.................
tv_setText = (TextView) findViewById(R.id.tv_setText);
bt_setText = (Button) findViewById(R.id.bt_setText);
tv_setText.setText("", TextView.BufferType.EDITABLE);
bt_setText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Editable content = (Editable) tv_setText.getText();
content.append(":"+(insertIndex++));
}
});
}
int insertIndex = 0;
That's all !
android editable接口,Spannable与Editable区别相关推荐
- editable string 转_Java Editable.getSpans方法代码示例
本文整理汇总了Java中android.text.Editable.getSpans方法的典型用法代码示例.如果您正苦于以下问题:Java Editable.getSpans方法的具体用法?Java ...
- java与ios的区别_好奇?Android与iOS究竟有什么区别?终于知道了!
智能手机系统的发展从如今的百花齐放在到三足立鼎,而发展到了现在则是安卓与ios两家平分天下.谁的系统好用?到底是IOS好呢,还是安卓系统好呢?至今没有一个结果.那么Android与iOS到底有什么区别 ...
- Java中实现接口与继承的区别
** Java中实现接口与继承的区别 ** 首先,先来了解一下什么是接口和继承.接口一般是使用interface来定义的.接口定义同类的定义类似,分为接口的声明和接口体,其中接口体由常量定义和方法定义 ...
- sata接口_接口不同有啥区别?M.2和SATA接口SSD该选哪种?
随着存储技术的快速发展,如今固态硬盘已是很多人电脑里不可或缺的一款硬件.在这场存储的革命中,为了实现更快的传输速度满足不同的需求,硬盘的接口经历了各种进化与革新,也便有了我们所熟之的 SATA.M.2 ...
- 面试题:接口和抽象类的区别
区别一,两者表达的概念不一样.抽象类是一类事物的高度聚合,那么对于继承抽象类的子类来说,对于抽象类来说,属于"是"的关系:而接口是定义行为规范,因此对于实现接口的子类来说,相对于接 ...
- Qt for Android 调用android原生接口分享图片或文字
在用Qt开发android应用的时候,有一个需求是通过调用android原生接口去实现图片分享功能,原理很简单,首先在java文件中用android接口封装一个分享功能的方法,然后在C++中调用QAn ...
- python接口和抽象类的区别_接口和抽象类有什么区别?
最近团队在招人:阿里新零售事业群CBU技术部招Java高级&专家,团队主要负责B2B工业品牌业务,坐标杭州滨江,有兴趣的小伙伴私戳我. **************************** ...
- java 关注公众号没有调接口_高频面试题:接口和抽象类的区别
作为一个基础的Java高频面试题,是所有Java面试者必须烂熟于心的.当然不能死记硬背,可以通过实际地写几个小demo,边实际操作边理解,既能感受到编程的快乐,更重要的是真的理解记住了二者的区别. 此 ...
- 抽象类和接口的共同点和区别
抽象类和接口个共同点和区别: 共同点: 不能实例化,都可以被继承 不同点: 抽象类有构造器,单继承性 接口没有构造器,多继承性
最新文章
- 一次绕过360+诺顿的提权过程
- [BZOJ2818][P2568]Gcd[欧拉函数]
- 无源波分和彩光模块_【光电通信】无源波分在 5G 场景中 的应用分析
- MATLAB偏振光的反射与折射,仿真程序动画作品--光的反射与折射*
- Ext.tree.Panel示例
- 微信公众帐号开发教程第10篇-解析接口中的消息创建时间CreateTime
- 1458: 移动距离(暴力模拟)
- Expo大作战(三十八)--expo sdk api之 FileSystem(文件操作系统)
- echarts 设置地图外边框以及多个geo实现缩放拖曳同步
- java平均分排序_编写java程序,输入10个成绩,计算最高分,最低分,平均分,并按从小到大排序,最后统计高于平均分的人有多少?...
- java吸血鬼数字_吸血鬼数字(java)
- 最全C++知识点--重载运算与类型转换
- Python学习 Day31 DOM
- 如何上传项目到github
- “中国IT服务管理论坛”2010年全国巡讲拉开帷幕
- c语言编程求lnx怎么写,c语言里ln怎么写
- NOIP2009靶形数独
- 从零开始,轻松打造你的聊天机器人
- jq 数组不重复_JS Jquery去除数组重复元素
- c盘html文件能删除吗,c盘什么文件可以删除_c盘很乱不敢删怎么解决