美文网首页学习之鸿蒙&AndroidAndroid控件使用篇
TextView怎么像ImageView一样显示图片

TextView怎么像ImageView一样显示图片

作者: 千夜零一 | 来源:发表于2021-06-28 10:25 被阅读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="哈哈哈哈哈哈"
            />
    

    相关文章

      网友评论

        本文标题:TextView怎么像ImageView一样显示图片

        本文链接:https://www.haomeiwen.com/subject/sksoyltx.html