Android -TextView插入图片

论坛 期权论坛 脚本     
匿名网站用户   2020-12-20 05:14   11   0

方式一 xml

   最简单 直接在Xml 布局文件中 设置 android:drawableXXX 即可,通过android:drawablePadding 调整文字与图片的距离。

方式二 反射

        // 利用html 插入图片
        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) {// html中 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) {}
不过 文字与图片的位置关系 不好控制 ,相对复杂,有时间研究。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1136255
帖子:227251
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP