方式一 xml
最简单 直接在Xml 布局文件中 设置 android:drawableXXX 即可,通过android:drawablePadding 调整文字与图片的距离。
方式二 反射
String text4 = " 图片1:<img src = 'app_log'/><br>";
text4 += " 图片2:<img src = 'succeed'/><br>";
Spanned spanned4 = Html.fromHtml(text4, new Html.ImageGetter() {
@Override
public Drawable getDrawable(String src) {
Drawable d = null ;
try {
Field field = R.mipmap.class.getField(src);
String s = field.get(null).toString();
int resourceId = Integer.parseInt(s);
d = getResources().getDrawable(resourceId);
d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return d;
}
},null);
textView4.setText(spanned4);
或者 直接
String html = "图片:<img src='" + R.drawable.one_piece + "'/>"
Html.ImageGetter imgGetter = new Html.ImageGetter() {
@Override
public Drawable getDrawable(String source) {// html 中 src 的值
int resourceId = Integer.parseInt(source)
Drawable d = getResources().getDrawable(resourceId)
d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight())
return d
}
}
CharSequence charSequence = Html.fromHtml(html, imgGetter, null)
方式三 ImageSpan 和 spanString
ImageSpan 有多个方法 ,我用下面的方法举例
//第三个参数 对齐方式
ImageSpan imgSpan = new ImageSpan(this,
R.drawable.count_1,
ImageSpan.ALIGN_BOTTOM)
SpannableString spanString = new SpannableString("abcdefghijklmnopqrstuvwxyz")
//0 4 图片要替换的文字索引
spanString.setSpan(imgSpan, 0, 4,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
textView6.setText(spanString)
// 追加文本
textView6.append("中国人民很伟大")
方法四 onDrow
重写 TextView 在 onDrow方法中 调用 drawBitmap(Bitmap bitmap, float left, float top, Paint paint) {}
不过 文字与图片的位置关系 不好控制 ,相对复杂,有时间研究。 |