美文网首页
Android 改变String中部分文字颜色和string.x

Android 改变String中部分文字颜色和string.x

作者: wuchao226 | 来源:发表于2019-01-11 16:45 被阅读6次

字符串+数字变量方法之%1s、%1d的用法

  1. %n$md:代表输出的是整数,n代表是第几个参数,设置m的值可以在输出之前放置空格
  2. %n$ms:代表输出的是字符串,n代表是第几个参数,设置m的值可以在输出之前放置空格
  3. %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 : 点击事件

相关文章

网友评论

      本文标题:Android 改变String中部分文字颜色和string.x

      本文链接:https://www.haomeiwen.com/subject/znbxdqtx.html