Android Span应用
来源:互联网 发布:vba抓取网页数据 编辑:程序博客网 时间:2024/06/13 09:38
Android Span应用
Android的Span常被用于完成一些TextView中的特殊内容。
1、SpannableString和SpannableStringBuilder
SpannableString和SpannableStringBuilder都继承了Spannable接口。区别在于SpannableString在初始化内不能改变内容,而SpannableStringBuilder可以。
想要改变内容的格式,需要调用setSpan(Object what, int start, int end, int flags)what是内容的格式,一般都是CharacterStyle的子类,我们将在下面阐述
start和end定义了内容的范围。
flags表示start和end是开区间还是闭区间,分别是下面四种类型。
- Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
- Spanned.SPAN_EXCLUSIVE_INCLUSIVE
- Spanned.SPAN_INCLUSIVE_EXCLUSIVE
- Spanned.SPAN_INCLUSIVE_INCLUSIVE
SpannableString ss = new SpannableString("0123456789");ss.setSpan(new ForegroundColorSpan(Color.RED), 3, 5, Spanned.SPAN_EXCLUSIVE_INCLUSIVE);EditText.setText(ss);
在3前面插入内容,内容颜色是默认的
在5后面插入内容,内容颜色是指定颜色
2、常用的span
(1) ForegroundColorSpan设置文字颜色
ForegroundColorSpan(@ColorInt int color)
(2) BackgroundColorSpan设置背景色
BackgroundColorSpan(int color)
(3) StrikethroughSpan设置删除线
StrikethroughSpan()
(4) UnderlineSpan设置文字下划线。
UnderlineSpan()
(5) URLSpan设置点击文字,可以打开一个URL
URLSpan(String url)
TextView.setMovementMethod(LinkMovementMethod.getInstance()
(6) StyleSpan设置样式
StyleSpan(int style)
style类型有NORMAL、BOLD、ITALIC和BOLD_ITALIC
(7) TypefaceSpan设置字体
TypefaceSpan(String family)
family类型有monospace、serif和sans-serif
(8) SuperscriptSpan设置为上标
SuperscriptSpan()
(9) SubscriptSpan设置为下标
SubscriptSpan()
(10) RelativeSizeSpan设置文字相对大小
RelativeSizeSpan(float proportion)
proportion是大小比例
(11) AbsoluteSizeSpan设置文字绝对大小
public AbsoluteSizeSpan(int size)
public AbsoluteSizeSpan(int size, boolean dip)
size默认是px,dip为true时size为dp,false时为px。
(12) ScaleXSpan设置文字横向缩放
ScaleXSpan(float proportion)
proportion设置缩放比例
(13) ImageSpan设置插入图片
ImageSpan(Context context, Bitmap b)
ImageSpan(Context context, Bitmap b, int verticalAlignment)
ImageSpan(Drawable d)
ImageSpan(Drawable d, int verticalAlignment)
ImageSpan(Context context, Uri uri)
ImageSpan(Context context, Uri uri, int verticalAlignment)
ImageSpan(Context context, @DrawableRes int resourceId)
ImageSpan(Context context, @DrawableRes int resourceId, int verticalAlignment)
Drawable drawable = getResources().getDrawable(R.drawable.star);drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());ImageSpan span = new ImageSpan(drawable);
3、多span应用
多span可以同时作用于文字。SpannableString ss = new SpannableString("0123456789");ss.setSpan(new RelativeSizeSpan(2), 3, 8, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);ss.setSpan(new URLSpan("tel:1234567890"), 3, 8, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);TextView.setMovementMethod(LinkMovementMethod.getInstance());
4、自定义Span
(1) 修改文字字体想要修改字体的自定义的span可以在updateDrawState里面修改TextPaint。
例如在ForegroundColorSpan类的updateDrawState方法中,将字体设置为指定颜色。
private final int mColor;public ForegroundColorSpan(@ColorInt int color) {mColor = color;}@Overridepublic void updateDrawState(TextPaint ds) {ds.setColor(mColor);}(2) 实现点击事件
继承ClickableSpan类,实现onClick方法
public abstract class ClickableSpan extends CharacterStyle { public abstract void onClick(View widget);}
- Android Span应用
- span应用
- android span相关
- Android中Span研究
- Android Span 架构介绍
- Android Span 进阶
- Android Span 的使用
- Android自定义Span示例
- Android Span 介绍
- span元素的实际应用
- Android-各种Span的用法
- Android Span架构学习笔记
- span
- span
- span
- SPAN
- Span
- span
- Deepin Linux 连接蓝牙键盘(需要配对码的键盘)
- SSM 拦截器的配置和具体实现
- matlab中的下标都是从1开始
- 字符串
- javaScript解析Json
- Android Span应用
- 2017.11.3
- CSS2-7种选择器
- break和continue的区别以及增强for循环详解
- 关于angularjs中$http POST请求参数的问题
- 11,装饰模式-孙悟空的六神装
- Mysql 通过经纬度计算与其他多条经纬度的距离
- 团队合作网页开发问题记录-Material Design Lite框架试水
- linux安装jdk