TextView中实现图文混排

TextView中实现图文混排的三种方式


1、使用WebView组件显示HTML页面。

2、集成View类或其子类,并覆盖onDraw方法,在该方法中直接绘制富文本或图像。

3、在TextView组件中可以使用富文本标签显示富文本信息,这种标签类似于HTML标签,但比HTML标签简单,比如,<font>用于设置字体,<b>用于设置粗体,但要先使用Html.fromHtml方法将这些文本转换成CharSequence对象,然后再将该对象作为TextView.setText方法的参数值。

在显示图像时需要实现ImageGetter接口,通过ImageGetter.getDrawable方法返回封装图像资源的Drawable对象。

4、在TextView组件中显示图像还可以使用ImageSpan对象,ImageSpan对象用于封装Bitmap对象,并通过SpanableString对象封装ImageSpan对象,最后将SpannableString对象作为TextView.setText方法的参数值将图像显示在TextView组件上。


使用<img>标签在TextView中插入图像

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    textView = (TextView) findViewById(R.id.textview)


    CharSequence charSequence = Html.fromHtml(html,new Html.ImageGetter(){
        @Override
        public Drawable getDrawable(String source)
        {
            //装载图像资源
            Drawable drawable = getResources().getDrawable(getResourceId(source));
            //设置要显示图像的大小(按原大小显示)
            drawable.setBounds(0,0,drawable.getIntrinsicWidth(),
                    drawable.getIntrinsicHeight());
            return drawable;
        }
    },null);
    textView.setText(charSequence);


使用ImageSpan对象在TextView组件中显示图像

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    textView = (TextView) findViewById(R.id.textview);

    //根据资源ID获得资源图像的Bitmao对象
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.icon);
    //根据Bitmao对象创建ImageSpan对象
    ImageSpan imageSpan = new ImageSpan(this,bitmap);
    //创建一个SpannableString对象,以便插入用ImageSpan对象封装的图像
    SpannableString spannableString = new SpannableString("icon");
    //ImageSpan对象替换icon
    spannableString.setSpan(imageSpan,0,4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    //将图像显示在TextView组件上
    textView.setText(spannableString);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值