Android最近学到的文字效果填充~不用Html也可以实现

来源:互联网 发布:js 异步方法 同步执行 编辑:程序博客网 时间:2024/05/21 12:44

有的时候可能只想用一个textview来表示文字,但文字里肯定有分不同内容的东西,需要用不同的颜色、样式来表示,这个时候,就需要用到SpannableString对象来处理。
mTextView = (TextView)findViewById(R.id.test);
SpannableString tSS = new SpannableString(“SpannableString学习中”);
tSS.setSpan(new BackgroundColorSpan(Color.RED), 0, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  //红色高亮
tSS.setSpan(new UnderlineSpan(), 15, 18,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);    //下划线
tSS.setSpan(new StyleSpan(android.graphics.Typeface.BOLD_ITALIC), 2, 5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); //斜体
mTextView.setText(tSS);
 
关键方法:
public void setSpan (Object what, int start, int end, int flags)
主要是start跟end
start是其实位置,无论中英文,都算一个。从0开始计算起。end是结束位置,所以处理的文字,包含开始位置,但不包含结束位置。
代码其实不复杂,只是记住这种解决方案,下次再碰到记起要用什么就行。

在别的论坛学的~

下面的摘自:http://blog.csdn.net/ftbgy10/article/details/7246274

 

  1. //ss.setSpan 的第一个参数是CharacterStyle的子类,用以设置字体样式 
  2.     //TextView对象  
  3.     TextView txtInfo new TextView(this);  
  4.   
  5.     //文本内容  
  6.     SpannableString ss new SpannableString("红色打电话斜体删除线绿色下划线图片:.");  
  7.   
  8.     //设置0-2的字符颜色  
  9.     ss.setSpan(new ForegroundColorSpan(Color.RED), 02,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  
  10.   
  11.     //设置2-5的字符链接到电话簿,点击时触发拨号  
  12.     ss.setSpan(new URLSpan("tel:4155551212"), 25,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  
  13.       
  14.     //设置9-11的字符为网络链接,点击时打开页面  
  15.     ss.setSpan(new URLSpan("http://www.hao123.com"), 911,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  
  16.   
  17.     //设置13-15的字符点击时,转到写短信的界面,发送对象为10086  
  18.     ss.setSpan(new URLSpan("sms:10086"), 1315,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  
  19.   
  20.     //粗体  
  21.     ss.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), 57,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  
  22.   
  23.     //斜体  
  24.     ss.setSpan(new StrikethroughSpan(), 710,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  
  25.   
  26. <pre name="code" class="java"   //下划线  
  27.     ss.setSpan(new UnderlineSpan(), 1016,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  
  28.   
  29. <pre name="code" class="java"><pre name="code" class="java"   //以下代码是在指定位置插入图片  
  30.     Drawable getResources().getDrawable(R.drawable.icon);  
  31.   
  32.     //设置图片大小  
  33.     d.setBounds(00d.getIntrinsicWidth(), d.getIntrinsicHeight());  
  34.   
  35.     //插入的位置  
  36.     ss.setSpan(new ImageSpan(d, ImageSpan.ALIGN_BASELINE), 1819Spannable.SPAN_INCLUSIVE_EXCLUSIVE);  
  37.   
  38.     //设置文本内容到textView  
  39.     txtInfo.setText(ss);  
  40.   
  41.     //不添加这一句,拨号,http,发短信的超链接不能执行.  
  42.     txtInfo.setMovementMethod(LinkMovementMethod.getInstance()); 
原创粉丝点击