Android - TextView使用Html.fromHtml设置文本时如何显示图片和文本

8

我尝试在Html.fromHtml()中显示文本和图片,但是图片无法正常显示。

message = (TextView) findViewById (R.id.message);  

message.setText(Html.fromHtml(
        "<p><b>First, </b><br/>" +
        "Please press the" + "<img src = 'addbutton.png' />" + " to insert a new event.</p>"));

文字能够正常显示,但图片无法显示。怎样进行改进?

使用ImageGetter,例如查看此链接https://dev59.com/q2Qo5IYBdhLWcg3wR9rE#16209680。 - pskink
我已经尝试了...还是无法搞定... :( - user2274349
你弄不懂它是什么意思吗? - pskink
我给你发送了一个可工作的示例,那么问题出在哪里? - pskink
那对我来说太复杂了...不管怎样...非常感谢...我的编码运行良好... - user2274349
显示剩余2条评论
1个回答

24

这是参考用户pskink的编码...

    package com.tutorial.myjob;

import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LevelListDrawable;
import android.os.Bundle;
import android.text.*;
import android.text.Html.ImageGetter;
import android.widget.*;

public class HelpMenu extends Activity implements ImageGetter{

    TextView message;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.help_menu);
        String code = "<p><b>First, </b><br/>" +
                "Please press the <img src ='addbutton.png'> button beside the to insert a new event.</p>" +
                "<p><b>Second,</b><br/>" +
                "Please insert the details of the event.</p>"
                "<p>The icon of the is show the level of the event.<br/>" +
                "eg: <img src = 'tu1.png' > is easier to do.</p></td>";

        message = (TextView) findViewById (R.id.message);       
        Spanned spanned = Html.fromHtml(code, this, null);
        message.setText(spanned);
        message.setTextSize(16);


    }

    @Override
    public Drawable getDrawable(String arg0) {
        // TODO Auto-generated method stub
        int id = 0;

        if(arg0.equals("addbutton.png")){
            id = R.drawable.addbutton;
        }

        if(arg0.equals("tu1.png")){
            id = R.drawable.tu1;
        }
        LevelListDrawable d = new LevelListDrawable();
        Drawable empty = getResources().getDrawable(id);
        d.addLevel(0, 0, empty);
        d.setBounds(0, 0, empty.getIntrinsicWidth(), empty.getIntrinsicHeight());

        return d;
    }

}

这是我编辑的内容... 这些代码对我运行良好... 感谢那些帮助过我的人... 非常感激~ ^^


1
放置tui.png图片的位置在哪里? - Naveed Ali
放图片的位置在哪里? - Anas Azeem
对于不确定在哪里放置图像的人...被覆盖的 getDrawable() 方法接受一个 String 参数,该参数是 html 中的 src=(即 tu1.png)。然后,该方法解析传入的 String 并分配要返回的 drawable(即 R.drawable.tu1)。图像(或 drawable)应放置在 /res/drawable-xhdpi/ 文件夹中(或任何/所有其他 /res/drawable-xxxxxx/ 文件夹中)。 - kefs
如何使用此解决方案将图像嵌入到TextView中? - jeel raja

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接