[Android教程]TextView常用功能讲解
我的博客:萝卜白菜的博客|orgcent
android学习教程我的QQ:397214807
Android技术互助QQ:104042731
简介:
人少不一定不好,重要的是有人能解决你的问题。这远比活跃在无法解决问题的地方要好的多。
你帮助我,我帮助你,大家一起帮助自己。
遇到困难,你不在孤单。
本教程主要是帮助Android开发学习者尽快入门,以最快的时间掌握基本的Android 开发知识。内容主要是针对每个控件的常用功能、系统一些常用API(如网络、电话、媒体、地图等)进行讲解。这些功能大部分在平时的项目中都会使用到,希望能够帮助您解决疑难困惑。如果您觉得这些基础知识没有必要,您大可没有必要把时间浪费在这里。每个人的时间每天都只有24小时,都一样的宝贵。
TextView使用SpannableString设置复合文本
原文地址:orgcent/android-textview-spannablestring-span/
TextView通常用来显示普通文本,但是有时候需要对其中某些文本进行样式、事件方面的设置。Android系统通过SpannableString类来对指定文本进行相关处理,具体有以下功能:
1、BackgroundColorSpan 背景
2、ClickableSpan 文本可点击,有点击事件
3、ForegroundColorSpan 文本颜(前景)
4、MaskFilterSpan 修饰效果,如模糊(BlurMaskFilter)、浮雕(EmbossMaskFilter)
5、MetricAffectingSpan 父类,一般不用
6、RasterizerSpan 光栅效果
7、StrikethroughSpan 删除线(中划线)
8、SuggestionSpan 相当于占位符,一般用在EditText输入框中。当双击此文本时,会弹出提示框选择一些建议(推荐的)文字,选中的文本将替换此占位符。在输入法上用的较多。
9、UnderlineSpan 下划线
10、AbsoluteSizeSpan 绝对大小(文本字体)
11、DynamicDrawableSpan 设置图片,基于文本基线或底部对齐。
12、ImageSpan 图片
13、RelativeSizeSpan 相对大小(文本字体)
14、ReplacementSpan 父类,一般不用
15、ScaleXSpan 基于x轴缩放
16、StyleSpan 字体样式:粗体、斜体等
17、SubscriptSpan 下标(数学公式会用到)
18、SuperscriptSpan 上标(数学公式会用到)
19、TextAppearanceSpan 文本外貌(包括字体、大小、样式和颜)
20、TypefaceSpan 文本字体
21、URLSpan 文本超链接
这么多文字,为了让你有看下去的勇气,下面来张效果图:
1、BackgroundColorSpan 背景
SpannableString spanText = new SpannableString("萝卜白菜的博客 -- orgcent");
spanText.setSpan(new BackgroundColorSpan(Color.GREEN), 0, spanText.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE); mTVText.append("\n");
mTVText.append(spanText);
2、ClickableSpan 文本可点击,有点击事件
查看:orgcent/android-textview-no-underline-hyperlink/
3、ForegroundColorSpan 文本颜(前景)
spanText = new SpannableString("萝卜白菜的博客 -- orgcent"); spanText.setSpan(new Fo
regroundColorSpan(Color.BLUE), 6,
spanText.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("\n");
mTVText.append(spanText);
4、MaskFilterSpan 修饰效果,如模糊(BlurMaskFilter)、浮雕(EmbossMaskFilter)
spanText = new SpannableString("MaskFilterSpan -- orgcent"); int length = spanText.length();
//模糊(BlurMaskFilter)
MaskFilterSpan maskFilterSpan = new MaskFilterSpan(new BlurMaskFilter(3, Blur.OUTER));
spanText.setSpan(maskFilterSpan, 0, length - 10, Spannable.
SPAN_INCLUSIVE_EXCLUSIVE);
//浮雕(EmbossMaskFilter)
maskFilterSpan = new MaskFilterSpan(new EmbossMaskFilter(new
float[]{1,1,3}, 1.5f, 8, 3));
spanText.setSpan(maskFilterSpan, length - 10, length,
Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("\n");
mTVText.append(spanText);
PS:从上图看,浮雕效果不明显。把字体设置大点后可以看得清晰些。需要其他效果可以继承MaskFilter来自定义。
6、RasterizerSpan 光栅效果
spanText = new SpannableString("StrikethroughSpan");
spanText.setSpan(new StrikethroughSpan(), 0, 7, Spannable.
SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("\n");
mTVText.append(spanText);
PS:暂不清楚,效果不明显。
7、StrikethroughSpan 删除线(中划线)
spanText = new SpannableString("StrikethroughSpan");
spanText.setSpan(new StrikethroughSpan(), 0, 7,
Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("\n");
mTVText.append(spanText);
8、SuggestionSpan
相当于占位符,一般用在EditText输入框中。当双击此文本时,会弹出提示框选择一些建议(推荐的)文字,选中的文本将替换此占位符。在输入法上用的较多。
PS:API 14新增,暂无示例。
9、UnderlineSpan 下划线
spanText = new SpannableString("UnderlineSpan");
spanText.setSpan(new UnderlineSpan(), 0, spanText.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("\n");
mTVText.append(spanText);
10、AbsoluteSizeSpan 绝对大小(文本字体)
spanText = new SpannableString("AbsoluteSizeSpan");
spanText.setSpan(new AbsoluteSizeSpan(20, true), 0, spanText.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("\n");
mTVText.append(spanText);
PS:把字体大小设置大点,效果硬朗。
11、DynamicDrawableSpan 设置图片,基于文本基线或底部对齐。
DynamicDrawableSpan drawableSpan = new
DynamicDrawableSpan(DynamicDrawableSpan.ALIGN_BASELINE) { @Override
public Drawable getDrawable() {
Drawable d = getResources().
getDrawable(R.drawable.ic_launcher);
d.setBounds(0, 0, 50, 50);
return d;
}
};
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论