SpannableString的基本用法
原文地址:http://www.cnblogs.com/kross/p/3645594.html
以前一直好奇QQ的输入框里面是如何出现表情的,今天看了下这个,心中发出“原来是这样啊”的感叹。
通常情况下,我们都是使用字符串类型的变量,直接放置在TextView.setText()的参数里面的。这样只能单纯的输出字符串。如果要给TextView加上特殊的文本效果,就要使用SpannableString这个类了。
用法如下:
new一个SpannableString对象,将要显示的字符串作为构造方法的参数传入。
调用SpannableString.setSpan(Object, int, int, int)方法进行设置。第一个参数为需要设定的样式,有很多个类可以选择,都在这里啦:http://developer.android.com/reference/android/text/style/CharacterStyle.html
官方文档上面那里的直接子类和间接子类都是可以用的样式。
第二参数是开始的位置,0表示第一个字符
第三个参数是结束的位置
第四个参数是一个表示替换的位置是否会影响开头和结尾,诶……我试了下发现没什么变化呢……
然后就是把这个SpannableString对象传给TextView.setText()方法的参数就好了。
代码如下:
public class MainActivity extends Activity {
private TextView tvTest = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvTest = (TextView)findViewById(R.id.tv_test);
SpannableString ss = new SpannableString("abcdefg");
//前景色
//ss.setSpan(new ForegroundColorSpan(Color.BLUE), 1, 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//背景色
//ss.setSpan(new BackgroundColorSpan(Color.RED), 1, 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//可点击触发事件
//ss.setSpan(new TextClickSpan(), 0, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//触发事件的话,要加上下面这句话
//tvTest.setMovementMethod(LinkMovementMethod.getInstance());
//下划线
//ss.setSpan(new UnderlineSpan(), 0, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//放置图片
ss.setSpan(new ImageSpan(this, R.drawable.ic_launcher), 0, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
tvTest.setText(ss);
}
class TextClickSpan extends ClickableSpan {
@Override
public void onClick(View widget) {
Log.i("clickable span", "click");
Toast.makeText(MainActivity.this, "aaaa", Toast.LENGTH_SHORT).show();
}
}
}
其实这个感觉就像是那种替换一样~
原文地址:http://www.cnblogs.com/kross/p/3645594.html
新浪微博:http://weibo.com/KrossFord
SpannableString的基本用法的更多相关文章
- [转]Android学习:EditText的使用方法
EditText是在Android开发中经常被使用到的控件,主要用来获取用户的输入内容. 1.EditText常用属性 EditText继承自TextView,所以EditText也拥 ...
- SpannableString使用详解
TextView算是android开发中最最常用的控件了,有的时候,我们要给一个TextView中的显示的文字设置不同的样式或者响应事件,比如同一个TextView中,有的字是红色,有的字是蓝色,有的 ...
- Android spannableStringBuilder用法整理
Android spannableStringBuilder用法整理 分类: Android开发2013-11-29 10:58 5009人阅读 评论(0) 收藏 举报 Androidspannabl ...
- 我的Android进阶之旅------>Android关于ImageSpan和SpannableString的初步了解
最近要实现一个类似QQ聊天输入框,在输入框中可以同时输入文字和表情图像的功能.如下图所示的效果: 为了实现这个效果,先去了解了一下ImageSpan和SpannableString的用法.下面用一个小 ...
- SpannableStringBuilder 用法浅析以及仿陌陌表情
SpannableStringBuilder 官方文档解释:这个类可以使文本的内容和标记都可以改变.当我们要为TextView或者Edittext里面的文字加入加入一些效果,如下划线,颜色标 识,超 ...
- 转 android design library提供的TabLayout的用法
原文出处:http://chenfuduo.me/2015/07/30/TabLayout-of-design-support-library/ 在开发中,我们常常需要ViewPager结合Fragm ...
- EditText 基本用法
title: EditText 基本用法 tags: EditText,编辑框,输入框 --- EditText介绍: EditText 在开发中也是经常用到的控件,也是一个比较必要的组件,可以说它是 ...
- jquery插件的用法之cookie 插件
一.使用cookie 插件 插件官方网站下载地址:http://plugins.jquery.com/cookie/ cookie 插件的用法比较简单,直接粘贴下面代码示例: //生成一个cookie ...
- Java中的Socket的用法
Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...
随机推荐
- [BZOJ3451]normal 点分治,NTT
[BZOJ3451]normal 点分治,NTT 好久没更博了,咕咕咕. BZOJ3451权限题,上darkbzoj交吧. 一句话题意,求随机点分治的期望复杂度. 考虑计算每个点对的贡献:如果一个点在 ...
- 使用cJSON库解析JSON
cJSON库的下载 cJSON是一个基于C的JSON解析库,这个库非常简单,只有cJSON.c和cJSON.h两个文件,支持JSON的解析和封装,需要调用时,只需要#include "cJS ...
- JavaScript流程控制及函数
1 流程控制 1.1 条件语句 分支结构 单向分支 if (条件表达式) { code...} 双向分支 if (条件表达式){ } else { } <!DOCTYPE html& ...
- 【oracle查询】oracle查询字段显示#号 (井号)
客户反映字段查询为井号,我自己没有遇到这种情况,于是上网百度了一下. 下面的答案很好地解决了问题,哈哈哈.
- java多线程系列(二)---对象变量并发访问
对象变量的并发访问 前言:本系列将从零开始讲解java多线程相关的技术,内容参考于<java多线程核心技术>与<java并发编程实战>等相关资料,希望站在巨人的肩膀上,再通过我 ...
- 怎么使用Spring配置事务 ?
Spring同时支持编程式事务策略和声明式事务策略,大部分时候都采用声明式事务策略. 声明式事务管理的配置方式,通常有以下4种: (1) 使用TransactionProxyFactoryBean为目 ...
- Mweb发布博客
1.设置 + 选择红色 2 输入该输入的帐号和密码  博客网址就是你的博客文章页的地址,然后输入帐号和密码 3 API 地址在 设置-->博客设置,红色标记就是API地址 4 发布, ...
- 【Unity Shader】(七) ------ 复杂的光照(下)
笔者使用的是 Unity 2018.2.0f2 + VS2017,建议读者使用与 Unity 2018 相近的版本,避免一些因为版本不一致而出现的问题. [Unity Sha ...
- c语言数字图像处理(五):空间滤波
空间滤波原理 使用大小为m*n的滤波器对大小为M*N的图像进行线性空间滤波,将滤波器模板乘以图像中对应灰度值,相加得模板中心灰度值 a = (m-1)/2, b = (n-1)/2 若f(x+s, y ...
- 新特性:postgresql的vacuum漫谈
文章出处:来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31556440/viewspace-2375109/ 前言 即便是从数据库特性,SQL功能性等方面,Pos ...