Android控件之TextView

TextView,这个平凡得不能再平凡的的控件,在别的语言里有用叫Lable,显示文字的一般都用它了。

 

一个HelloWorld开始程序员们的第一个Demo.

TextView可以用来做什么,我列了一下(如果你相到其他的麻烦帮忙指点):

  • 显示单一的便签内容
  • 图标加文字。
  • 简单的HTML文本内容或自定义同时可以加载图片。
  • 内容中的某些字进行变色,甚至加点击操作。(如果微博或微信的评论)

 

用户加载网络图片及HTML的TextView

NetImageTextView.java

 1 import java.net.URL;
 2 import android.content.Context;
 3 import android.graphics.drawable.Drawable;
 4 import android.text.Html;
 5 import android.text.Html.ImageGetter;
 6 import android.text.method.LinkMovementMethod;
 7 import android.util.AttributeSet;
 8 import android.widget.TextView;
 9 
10 public class NetImageTextView extends TextView {
11 
12     public NetImageTextView(Context context, AttributeSet attrs, int defStyle) {
13         super(context, attrs, defStyle);
14     }
15 
16     public NetImageTextView(Context context, AttributeSet attrs) {
17         super(context, attrs);
18     }
19 
20     public NetImageTextView(Context context) {
21         super(context);
22     }
23 
24     public void setHtmlText(String html) {
25         setMovementMethod(LinkMovementMethod.getInstance());
26         this.setText(Html.fromHtml(html, new ImageGetter() {
27 
28             @Override
29             public Drawable getDrawable(String source) {
30                 Drawable drawable = null;
31                 URL url;
32                 try {
33                     url = new URL(source);
34                     drawable = Drawable.createFromStream(url.openStream(), ""); // 获取网路图片
35                 } catch (Exception e) {
36                     e.printStackTrace();
37                     return null;
38                 }
39                 drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight());
40                 return drawable;
41             }
42         }, null));
43     }
44 
45 }
View Code

 

让部分中的部分字变色或加粗就要用到SpannableStringBuilder。

例如:

String content = "小王回复小李:赞一个";
builder = new SpannableStringBuilder(content);
builder.setSpan(new StyleSpan(Typeface.BOLD), 0, 2, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
textview.setText(builder);
方法  public void setSpan (Object what, int start, int end, int flags)可以根据需要使用,上例StyleSpan(Typeface.BOLD)是一个加粗的效果。ForegroundColorSpan是字段颜色,start,end是要操作的内容的开始和结束位置,想要理详情的使用可以参考官方文档。




郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。