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 + ""; }
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
<string name="fa_dot_circle_o"></string><string name="fa_wheelchair"></string><string name="fa_vimeo_square"> </string><string name="fa_try"></string><string name="fa_plus_square_o"></string>
textView直接引用
Typeface font = Typeface.createFromAsset(getAssets(), "fontawesome-webfont.ttf"); tab1.setTypeface(font);
空格需要使用转义字符
public static String blankSpace = " "; public static String blankSpace2 = "&emsp&emsp";
优点:十分简单
不足:图片颜色只能设置单一色