androidtextview组件显⽰富⽂本信息
android 中textview显⽰富⽂本信息具有以下⼏种⽅式:
1,利⽤富⽂本标签,类似于html标签,如<b>,<font>,<img>等,不过不能直接作为textview.setText的参数值,⽽应该静html.fromHtml⽅法将这些⽂本转换为charsequence对象。如果想要显⽰图⽚的时候,还需要实现imagegetter接⼝
2,重写ondraw⽅法
3,利⽤webview组件显⽰html页⾯
4,textview中显⽰图⽚还可以使⽤imagespan对象,该对象⽤来封itmap对象,并通过spannableString对象封装imagespan对象,将其作为settext⽅法的参数。
⽅法1的代码如下:
TextView tv = (TextView) this.findViewById(R.id.tv);
String html="<strong>我的测试</strong><img src=\"ic_launcher-web.png\"><img src=\"\">";
CharSequence charSequence=Html.fromHtml(html,new ImageGetter(){
@Override
public Drawable getDrawable(String arg0) {
Drawable drawable=Resources().getDrawable(R.drawable.ic_launcher);
//下⾯这句话不可缺少
drawable.setBounds(0,IntrinsicWidth(),IntrinsicHeight());
return drawable;
}},null);
tv.setText(charSequence);
}
html富文本框其中碰到img标签返回的drawable对象是由接⼝返回的值来决定,如果得到的是⽹络上的图像,那么显⽰的就是⽹络的图像。
TextView tv = (TextView) this.findViewById(R.id.tv);
String html="<strong>我的测试</strong><img src=\"tp1.sinaimg/2668435432/180/5636292734/0\">";
CharSequence charSequence=Html.fromHtml(html,new ImageGetter(){
@Override
public Drawable getDrawable(String arg0) {
Drawable d = null;
try {
InputStream is = new DefaultHttpClient().execute(new HttpGet(arg0)).getEntity().getContent();
Bitmap bm = BitmapFactory.decodeStream(is);
d = new BitmapDrawable(bm);
d.setBounds(0, 0, 200, 300);
} catch (Exception e) {e.printStackTrace();}
return d;
}
},null);
tv.setText(charSequence);
利⽤这种⽅法更多的是显⽰从⽹络上获取的照⽚(另外⼀种更⼴泛的⽅法是利⽤webview);如果需要显⽰的是本地资源⽂件的图像资源,更多的利⽤imagespan。
TextView tv = (TextView) this.findViewById(R.id.tv);
Drawable drawable=getResources().getDrawable(R.drawable.ic_launcher);
drawable.setBounds(0,IntrinsicWidth(),IntrinsicHeight());
ImageSpan span=new ImageSpan(drawable);
SpannableString spannableString=new SpannableString("span");
spannableString.setSpan(span, 0, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.setText(spannableString);
//⽤超链接标记⽂本
spannableString.setSpan(new URLSpan("tel:4155551212"), 2, 3,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
可见利⽤span对象,除了可以显⽰图⽚之外,还可以显⽰其他丰富的信息。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论