??????最近在開(kāi)發(fā)過(guò)程遇到一個(gè)需求,效果圖如下,這是RecycleView列表的item布局呀狼,其中Default和Home是標(biāo)簽信息(每個(gè)item會(huì)都不一樣),后面是地址信息损离。
分析了一下有兩種方式哥艇,
- 第一個(gè)是自定義一個(gè)layout,動(dòng)態(tài)添加TextView僻澎,比如按照上面的item她奥,就是添加四個(gè)TextView,Default怎棱、Home、第一行地址绷跑、第二行地址拳恋,但這種比較麻煩,還需要計(jì)算第一行能顯示多少地址信息砸捏,拆分成兩段谬运;
- 第二種是可以使用TextView設(shè)置html富文本實(shí)現(xiàn),這種方式可以將Default垦藏、Home標(biāo)簽做成圖片梆暖,html可以通過(guò)img標(biāo)簽來(lái)顯示圖片,然后在后面拼接文字掂骏,這種方式就不需要計(jì)算什么時(shí)候需要換行轰驳,更簡(jiǎn)單一些,于是決定用第二種來(lái)實(shí)現(xiàn)弟灼,具體實(shí)現(xiàn)方式如下:
- 使用Html.fromHtml(String source, ImageGetter imageGetter, TagHandler tahHandler)方法级解;
// getAddress()獲取html富文本,getImageGetter()獲取ImageGetter對(duì)象
textView.setText(Html.fromHtml(getAddress(), getImageGetter(), null));
- 拼接html富文本田绑;
/**
* Desc:通過(guò)img標(biāo)簽加載tab圖片勤哗,后面拼接地址字符串
* @return string
*/
private String getAddress() {
return "<img src='" + R.mipmap.tag_default + "'/> "
+ "<img src='" + R.mipmap.tag_home + "'/> "
+ "address";
}
- 獲取ImageGetter對(duì)象;
/**
* Desc:getDrawable傳參source為img標(biāo)簽傳入的圖片資源id掩驱,最終返回圖片的Drawable對(duì)象
* @return ImageGetter
*/
private Html.ImageGetter getImageGetter() {
return new Html.ImageGetter() {
@Override
public Drawable getDrawable(String source) {
Drawable drawable = BaseApplication.getInstance().getResources().getDrawable(Integer.parseInt(source));
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight());
return drawable;
}
};
}
??????通過(guò)以上方法即可實(shí)現(xiàn)文章開(kāi)頭的UI效果芒划,這邊我省略了一些邏輯,比如富文本拼接需要根據(jù)實(shí)際要顯示的文字內(nèi)容做拼接欧穴、標(biāo)簽圖片根據(jù)實(shí)際情況修改等民逼,主要是記錄下這種實(shí)現(xiàn)TextView顯示圖片和文字的方式,希望可以給大家提供參考苔可;