ImageSpan图片不能居中的问题

点击下载:MyImageSpan.txt

 

使用ImageSpan的童鞋应该都会遇到这样一个困惑,图片不能居中显示,ImageSpan中只有ImageSpan.ALIGN_BASELINE与ImageSpan.ALIGN_BOTTOM两个选项

关键是即使设置了这个参数,在不同手机上可能出现的情况还不同,同一段代码,可能有的居上,有的居下...其实这个很容易解决,继承ImageSpan重写getSize()和draw()方法即可

@Override  
    public void draw(Canvas canvas, CharSequence text, int start, int end,  
            float x, int top, int y, int bottom, Paint paint) {  
    	try {
            Drawable b = getDrawable();  
            canvas.save();  
            int transY = 0;  
            transY = ((bottom-top) - b.getBounds().bottom)/2+top;  
            canvas.translate(x, transY);  
            b.draw(canvas);  
            canvas.restore();
	} catch (Exception e) {
	}  
    }  

 

 具体看顶部附件

另外在设置spannString.setSpan最后一个flags参数,

分别有

Spanned.SPAN_EXCLUSIVE_EXCLUSIVE(前后都不包括)、

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

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

Spanned.SPAN_INCLUSIVE_INCLUSIVE(前后都包括)

四个选项,包括即与span指定的内容格式一致,如span为红色字体,如果前面包括后面不包括,则在span内容的前面输入是红色字体(与span一致),后面输入是默认颜色字体。如果ImageSpan是图片,则需要设置前后都不包括,不然,包括的部分输入文字会不可见。

 

本文为原创,转载请注明转自:e7咨询  http://www.e7yoo.com/?post=30 

posted @ 2016-05-18 09:58  IT老五  阅读(2134)  评论(0编辑  收藏  举报