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 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM