显示图片的控件并不只有ImageView,今天来使用如下四种方法让TextView显示图片。
第一种:XML文件中指定属性值
android:drawableLeft:在text的左边输出一个drawable,如图片。以下类同
android:drawableTop
android:drawableRight
android:drawableBottom
android:drawablePadding:设置text与drawable(图片)的间隔
这样图片就可以显示在TextView控件上了~
如何设置图片和文本对齐呢?
val tvAsImage = findViewById(R.id.textView)
tvAsImage.setCompoundDrawablesWithIntrinsicBounds(null,
resources.getDrawable(R.drawable.user_img, null), null, null);
第二种:通过解析HTML来显示图片
val tvAsImage = findViewById(R.id.textView)
val htmlForImage = "图片"+""+"展示"
tvAsImage.text = Html.fromHtml(htmlForImage, { source ->
val drawable = resources.getDrawable(source!!.toInt(),null)
drawable.setBounds(0, 0, 200, 200)
drawable
}, null)
第三种:通过ImageSpan+SpannableString相结合
mTextView04 = (TextView) findViewById(R.id.textview_04);
ImageSpan imgSpan = new ImageSpan(this, R.drawable.apple);
SpannableString spannableString = new SpannableString("012345");
spannableString.setSpan(imgSpan, 1, 5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
mTextView04.setText(spannableString);
第四种:通过继承TextView方式,使用Bitmap
这种方式的原理是通过继承TextView,并重写onDraw(),让图片直接画到文本上,这会导致图片跟文本重叠,它们之间的间距不好控制。
/**
* @data on 2021/6/25 3:51 下午
* @auther KC
* @describe TextView添加图片
*/
public class TextViewAsImage extends AppCompatTextView {
private Bitmap mBitmap;
public TextViewAsImage(Context context) {
super(context);
}
public TextViewAsImage(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
mBitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.user_img);
setTextSize(40);
}
public TextViewAsImage(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawBitmap(mBitmap, 0, 0, getPaint());
}
}
//布局中