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中的 ...
随机推荐
- 11 stark组件之delete按钮、filter过滤
1.构建批量删除按钮 1.admin中每个页面默认都有 2.stark之构建批量删除 3.coding {% extends 'base.html' %} {% block title %} < ...
- 【BZOJ1041】[HAOI2008]圆上的整点
[BZOJ1041][HAOI2008]圆上的整点 题面 bzoj 洛谷 题解 不妨设\(x>0,y>0\) \[ x^2+y^2=r^2\\ y^2=(x+r)(x-r) \] 设\(r ...
- P1402 酒店之王
P1402 酒店之王 每个人要匹配一个A和一个B,所以这样连边: S向每个房间连边. 每个房间向喜欢这个房间的人连边. 每个人向喜欢的菜连边. 每道菜向T连边. 边权均为1. 注意人要限流. // I ...
- 牛客网NOIP赛前集训营-提高组(第六场)-A-最长路[拓扑排序+hash+倍增]
题意 给定一个 \(n\) 点 \(m\) 边的边权非负的有向图,边有字符,求以每个点为开头的最长路字典序最小的路径 \(hash\) 值. \(n,m\leq 10^6\) 分析 首先建反图拓扑排序 ...
- python爬虫之数据的三种解析方式
一.正则解析 单字符: . : 除换行以外所有字符 [] :[aoe] [a-w] 匹配集合中任意一个字符 \d :数字 [0-9] \D : 非数字 \w :数字.字母.下划线.中文 \W : 非\ ...
- Python值hashlib详解
一.hashlib的基本概念 .什么叫hash:hash是一种算法(不同的hash算法只是复杂度不一样)(.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SH ...
- 10min 手写一个内存监控系统
本文的目的在于,尽可能用简单的代码,让大家了解内存监控的原理,及思想.更容易去理解Nagios.Zabbix.Ganglia监控原理,文章最后还有视频教程链接哦,从零敲出来的全过程 思路分为下面几块: ...
- 开源项目CIIP(企业信息管理系统框架).2018.1.0910版更新介绍-上周工作总结
又狂撸了一周的代码.简化了0904版本的多数操作. 上一次更新时,总共需要10步,这次简化成3步.嗯嗯,自我感觉不错. 重要的:在创建项目时,可以选择常用模块啦! 第一步:启动CIIP.Designe ...
- Jmeter中正则表达式提取器
在使用Jmeter过程中,会经常使用到正则表达式提取器提取器,虽然并不直接涉及到请求的测试,但是对于数据的传递起着很大的作用,本篇博文就是主要讲解关于正则表达式及其在Jmeter的Sampler中的调 ...
- ASP.NET Core 接触&介绍
几年前从朋友口中了解到了微软出来一个ASP.NET Core ,当时还是1.0版本,聊天时还吐槽不好用之类的.前不久了解.NET Core 已经出3.0版本了,突然想试试,了解了解.ASP.NET C ...