java 图文混排_图文混排的几种实现方案

1、自定义控件

https://github.com/hongyangAndroid/MixtureTextView

原理:MixtureTextView extends RelativeLayout,将图片(包括gif)放在MixtureTextView中,根据属性,例如alignParentRight等,在onLayout里获取属性值,在dispatchDraw里根据图片所占的位置绘制文字,以此实现图文混排

不足:图片位置需要相对文字固定

2、使用html的img标签实现

/**

* 拼接图片

*

* @return

*/

private String descString(String s) {

return s + "%22%20+%20R.drawable.icon%20+%20%22";

}

tv_title.setText(Html.fromHtml(descString(bean.title), getImageGetterInstance(), null));

/**

* ImageGetter用于text图文混排

*

* @return

*/

public Html.ImageGetter getImageGetterInstance() {

Html.ImageGetter imgGetter = new Html.ImageGetter() {

@Override

public Drawable getDrawable(String source) {

int fontH = (int) (getResources().getDimension(R.dimen.fontH));

int id = Integer.parseInt(source);

Drawable d = getResources().getDrawable(id);

int width = (int) ((float) d.getIntrinsicWidth() / (float) d.getIntrinsicHeight()) * fontH;

d.setBounds(0, 0, width, fontH);

return d;

}

};

return imgGetter;

}

优点:简单,易使用

不足:图片位置适配不好处理(通过html标签应该可以解决)

3、使用字体包ttf

原理:将图案做在ttf里

string.xml,由设计给具体code

 

 

textView直接引用

Typeface font = Typeface.createFromAsset(getAssets(),

"fontawesome-webfont.ttf");

tab1.setTypeface(font);

空格需要使用转义字符

public static String blankSpace = "&nbsp&nbsp";

public static String blankSpace2 = "&emsp&emsp";

优点:十分简单

不足:图片颜色只能设置单一色

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值