因公司項(xiàng)目需要愿汰,其實(shí)也是自己給自己挖的坑,看著首頁(yè)展示imageview不好看枕屉,因?yàn)閕mageview數(shù)量不定数冬,有的是3張有的是1張,給用戶效果不好搀庶,才找的設(shè)計(jì)改的ui設(shè)計(jì)拐纱,并且給設(shè)計(jì)說(shuō)如果有圖片,直接在詳情頁(yè)展示就行了哥倔,在首頁(yè)只需要加上個(gè)有圖片的標(biāo)秸架,無(wú)奈只能自己寫(xiě)個(gè)textview了
1.首先新建個(gè)ImageTextView類,繼承TextView類咆蒿,實(shí)現(xiàn)他的構(gòu)造方法
2.在attrs文件下新建個(gè)ImageTextView屬性文件东抹,便于自定義view屬性使用
3.在ImageTextView的實(shí)現(xiàn)了TextView的onMeasure方法中注冊(cè)ViewTreeObserver vto2 = getViewTreeObserver();
vto2.addOnGlobalLayoutListener(this);,否則直接獲取控件的寬度getWidth()=0沃测,因?yàn)槲覀冊(cè)谡{(diào)用的時(shí)候View根本沒(méi)用進(jìn)行繪制相應(yīng)的函數(shù)沒(méi)有調(diào)用
4.在onGlobalLayout()中對(duì)文字進(jìn)行寬度的獲取缭黔,然后對(duì)圖片位置進(jìn)行添加
5.在用到的xml文件中直接使用
其中app:srcImage就是我們?cè)赥extView中需要追加的圖片,至于想顯示幾行蒂破,直接使用系統(tǒng)的maxLines來(lái)設(shè)置就行了
最終效果如下