Android 改变String中部分文字颜色和string.x
2019-01-11 本文已影响6人
wuchao226
字符串+数字变量方法之%1d的用法
- %n$md:代表输出的是整数,n代表是第几个参数,设置m的值可以在输出之前放置空格
- %n$ms:代表输出的是字符串,n代表是第几个参数,设置m的值可以在输出之前放置空格
- %n$mf:代表输出的是浮点数,n代表是第几个参数,设置m的值可以控制小数位数,如m=2.2时,输出格式为0.00
改变部分文章颜色方法
TextView textView = (TextView)findViewById(R.id.textview);
//方法一:
textView.setText(Html.fromHtml("<font color=\"#ff0000\">红色</font>其它颜色"));
//方法二:
String text = "获得银宝箱!";
SpannableStringBuilder style=new SpannableStringBuilder(text);
//设置指定位置textview的背景颜色
style.setSpan(new BackgroundColorSpan(Color.RED),2,5,Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
//设置指定位置文字的颜色
style.setSpan(new ForegroundColorSpan(Color.RED),0,2,Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
textView.setText(style);
android string.xml文件中的整型和string型代替:
对应的string.xml文件参数:
<string name="tips">您今天打了%1$d局,还差%2$d局可获得%3$s!</string>
- %1$d表达的意思是整个name=”tips”字符串中,第1个整型
- %2$d表达的意思是整个name=”tips”字符串中,第2个整型
- %3$s表达的意思是整个name=”tips”字符串中,第3个字符串
Java代码:
String text = String.format(getResources().getString(R.string.tips), 2,18,"银宝箱");
项目开发中使用
TextView textView = (TextView)findViewById(R.id.testview);
String text = String.format(getResources().getString(R.string.baoxiang), 2,18,"银宝箱");
int[] index = new int[3];
index[0] = text.indexOf("2");
index[1] = text.indexOf("18");
index[2] = text.indexOf("银宝箱");
SpannableStringBuilder style=new SpannableStringBuilder(text);
style.setSpan(new ForegroundColorSpan(Color.RED),index[0],index[0]+1,Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
style.setSpan(new ForegroundColorSpan(Color.RED),index[1],index[1]+2,Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
style.setSpan(new BackgroundColorSpan(Color.RED),index[2],index[2]+3,Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
textView.setText(style);
SpannableStringBuilder和SpannableString
详细用法参考:https://www.jianshu.com/p/f004300c6920
SpannableStringBuilder和SpannableString主要通过使用setSpan(Object what, int start, int end, int flags)改变文本样式。
对应的参数:
- start: 指定Span的开始位置
- end: 指定Span的结束位置,并不包括这个位置。
- flags:取值有如下四个
- Spannable. SPAN_INCLUSIVE_EXCLUSIVE:前面包括,后面不包括,即在文本前插入新的文本会应用该样式,而在文本后插入新文本不会应用该样式
- Spannable. SPAN_INCLUSIVE_INCLUSIVE:前面包括,后面包括,即在文本前插入新的文本会应用该样式,而在文本后插入新文本也会应用该样式
- Spannable. SPAN_EXCLUSIVE_EXCLUSIVE:前面不包括,后面不包括
- Spannable. SPAN_EXCLUSIVE_INCLUSIVE:前面不包括,后面包括
- what: 对应的各种Span,不同的Span对应不同的样式。已知的可用类有:
- BackgroundColorSpan : 文本背景色
- ForegroundColorSpan : 文本颜色
- MaskFilterSpan : 修饰效果,如模糊(BlurMaskFilter)浮雕
- RasterizerSpan : 光栅效果
- StrikethroughSpan : 删除线
- SuggestionSpan : 相当于占位符
- UnderlineSpan : 下划线
- AbsoluteSizeSpan : 文本字体(绝对大小)
- DynamicDrawableSpan : 设置图片,基于文本基线或底部对齐。
- ImageSpan : 图片
- RelativeSizeSpan : 相对大小(文本字体)'
- ScaleXSpan : 基于x轴缩放
- StyleSpan : 字体样式:粗体、斜体等
- SubscriptSpan : 下标(数学公式会用到)
- SuperscriptSpan : 上标(数学公式会用到)
- TextAppearanceSpan : 文本外貌(包括字体、大小、样式和颜色)
- TypefaceSpan : 文本字体
- URLSpan : 文本超链接
- ClickableSpan : 点击事件