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

2019-01-11  本文已影响6人  wuchao226

字符串+数字变量方法之%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>  

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)改变文本样式。

对应的参数:

上一篇下一篇

猜你喜欢

热点阅读