学习之鸿蒙&AndroidAndroid控件使用篇

TextView怎么像ImageView一样显示图片

2021-06-28  本文已影响0人  千夜零一

显示图片的控件并不只有ImageView,今天来使用如下四种方法让TextView显示图片。

第一种:XML文件中指定属性值

android:drawableLeft:在text的左边输出一个drawable,如图片。以下类同
android:drawableTop
android:drawableRight
android:drawableBottom
android:drawablePadding:设置text与drawable(图片)的间隔
这样图片就可以显示在TextView控件上了~
如何设置图片和文本对齐呢?

val tvAsImage = findViewById<TextView>(R.id.textView)
tvAsImage.setCompoundDrawablesWithIntrinsicBounds(null,
    resources.getDrawable(R.drawable.user_img, null), null, null);

第二种:通过解析HTML来显示图片

 val tvAsImage = findViewById<TextView>(R.id.textView)
 val htmlForImage = "图片"+"<img src="+R.drawable.user_img+">"+"展示"
 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());
    }
}

//布局中
<com.example.mykotlindemo.view.TextViewAsImage
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="哈哈哈哈哈哈"
        />
上一篇下一篇

猜你喜欢

热点阅读