热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

让TextView展示不同颜色字体,让局部字体拥有点击事件

发现很多时候展示一堆文字,需要让局部的某些字变粗啊,变大、变颜色、能点击等等要求,今天在这简单总结下方便日后直接复用(用ht

发现很多时候展示一堆文字,需要让局部的某些字变粗啊,变大、变颜色、能点击等等要求,今天在这简单总结下方便日后直接复用(用html写的也很简单,在这就不写了),在这里我用 SpannableString 这个类实现下(SpannableStringBuilder 也可以自己看下,大体相似)

String str1 = “欢迎来北京”;

String str2 = "一起看";

String str3 = "太阳";

上面分成三部分,让第二部分实现以下功能;

1、让局部字体变色

SpannableString ss = new SpannableString(str1+ str2 + str6_3 + str3);
ForegroundColorSpan redSpan = new ForegroundColorSpan(Color.RED);//红色

ss.setSpan(redSpan,str1.length(),str1.length()+str2.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//sr2的字体变色

TextView cOntent= (TextView) findViewById(R.id.content);

content.append(ss);


2、让局部变色可点击有下划线,俗称超链接

SpannableString ss = new SpannableString(str1+ str2 + str6_3 + str3);
 

ClickableSpan cs1 = new ClickableSpan() {@Override
public void onClick(View widget) {//点击事件操作avoidHintColor(widget);//设置变色部分字体的背景,不设置的话有一个背景色,在这里我设成透明}@Override
public void updateDrawState(TextPaint ds) {super.updateDrawState(ds);ds.setColor(getResources().getColor(R.color.black_blue));}
};
ss1.setSpan(cs1, str1_1.length(), str1_1.length() + str1_2.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
content1.append(ss1);
content1.setMovementMethod(LinkMovementMethod.getInstance());//设置超链接


//变色字体部分背景设置成透明得到

private void avoidHintColor(View view) {if (view instanceof TextView)((TextView) view).setHighlightColor(getResources().getColor(android.R.color.transparent));
}

3.让局部字体变大、变粗等等看下面可以自己设置啦

AbsoluteSizeSpan(int size) —— 设置字体大小,参数是绝对数值,相当于Word中的字体大小

RelativeSizeSpan(float proportion) —— 设置字体大小,参数是相对于默认字体大小的倍数,比如默认字体大小是x, 那么设置后的字体大小就是x*proportion,这个用起来比较灵活,proportion>1就是放大(zoom in), proportion<1就是缩小(zoom out)

ScaleXSpan(float proportion) —— 缩放字体,与上面的类似,默认为1,设置后就是原来的乘以proportion,大于1时放大(zoon in),小于时缩小(zoom out)

BackgroundColorSpan(int color) —— 背景着色,参数是颜色数值,可以直接使用android.graphics.Color里面定义的常量,或是用Color.rgb(int, int, int)

ForegroundColorSpan(int color) —— 前景着色,也就是字的着色,参数与背景着色一致

TypefaceSpan(String family) —— 字体,参数是字体的名字比如“sans”, “sans-serif”等


StyleSpan(Typeface style) —— 字体风格,比如粗体,斜体,参数是android.graphics.Typeface里面定义的常量,如Typeface.BOLD,Typeface.ITALIC等等。






推荐阅读
author-avatar
501917112_0de975_837
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有