使用ImageSpan在TextView中加入图片(例如:百度贴吧置顶或精华图标设置)

使用ImageSpan在TextView中加入图片(例如:百度贴吧置顶或精华图标设置)效果如下所示:

使用imageSpan的关键代码如下所示:

/**
     * @param textview
     * @param str 文本内容
     * @param iconName “精华”或“置顶”
     */
    public void setEssenceOrTop(TextView textview, String str,String iconName){
        String content ="";
        ImageSpan imageSpan = null;
        Drawable drawable = null;
        content = "【"+iconName+"】 "+str;//在文本内容最前面加入【精华】或者【置顶】
        SpannableStringBuilder spanText = new SpannableStringBuilder();
        spanText.append(content);

        if("精华".equals(iconName)){
               drawable = mContext.getResources().getDrawable(R.drawable.icon_elite);       
        }
        if("置顶".equals(iconName)){
               drawable =mContext.getResources().getDrawable(R.drawable.icon_top);        
        }
        drawable.setBounds(0, 0, drawable.getMinimumWidth(),
                drawable.getMinimumHeight());
        imageSpan = new ImageSpan(drawable,ImageSpan.ALIGN_BASELINE);//以基线对齐

        //取得【精华】或者【置顶】的范围
        int start = content.indexOf("【"+iconName+"】");
        int end = start + ("【"+iconName+"】").length();

        //使用对应的图标替代【精华】或者【置顶】    

            spanText.setSpan(imageSpan, start, end,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

        textview.setText(spanText);
    }

说明:Spanned.SPAN_EXCLUSIVE_EXCLUSIVE(前后都不包括)

        Spanned.SPAN_INCLUSIVE_EXCLUSIVE(前面包括,后面不包括)

        Spanned.SPAN_EXCLUSIVE_INCLUSIVE(前面不包括,后面包括)

        Spanned.SPAN_INCLUSIVE_INCLUSIVE(前后都包括)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值