Android显示和编辑HTML

时间:2014-07-07 11:53:19

标签: java android html android-layout

我正在处理电子邮件客户端,我需要显示HTML电子邮件并在某种EditText视图中进行编辑。

我将电子邮件下载为HTML并将其显示在WebView中 - 没关系。但是,当我想回复此电子邮件或编辑我的HTML签名时,我需要以某种EditText显示它,它可以正确显示并编辑它。某种所见即所得......

有什么解决方案吗?谢谢

我错过了什么吗?

编辑:
所以我试着像这样使用ImageGetter:

mEmailEditText.setText(Html.fromHtml(mArgumentEmail.getmHtmlMessage(), getImageHTML(), null));

private Html.ImageGetter getImageHTML() {
    Html.ImageGetter imageGetter = new Html.ImageGetter() {
        public Drawable getDrawable(String source) {
            try {
                Drawable drawable = Drawable.createFromStream(new URL(source).openStream(), "src name");
                drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight());
                return drawable;
            } catch(IOException exception) {
                Log.v("IOException", exception.getMessage());
                return null;
            }
        }
    };
    return imageGetter;
}

但它没有用......“不幸的是,电子邮件已经停止了。”在mEmailEditText.setText..

 Caused by: android.os.NetworkOnMainThreadException ....

EDIT2:
所以我的最终工作结果如下:

 public Html.ImageGetter getImageHTML() {
    Html.ImageGetter imageGetter = new Html.ImageGetter() {
        public Drawable getDrawable(String source) {
            DownloadImageTask task = new DownloadImageTask();
            try {
                return task.execute(new String[] { source }).get();
            } catch (InterruptedException e) {
                e.printStackTrace();
            } catch (ExecutionException e) {
                e.printStackTrace();
            }
            return null;
        }
    };
    return imageGetter;
}

private class DownloadImageTask extends AsyncTask<String, Void, Drawable> {
    protected Drawable doInBackground(String... urls) {
        for(String s : urls) {
            try {
                Drawable drawable = Drawable.createFromStream(new URL(s).openStream(), "src name");
                drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
                return drawable;
            } catch (IOException exception) {
                Log.v("IOException", exception.getMessage());
                return null;
            }
        }
        return null;
    }

    @Override
    protected void onPostExecute(Drawable drawable) {
        super.onPostExecute(drawable);
    }
}

除了电子邮件与WebView看起来不一样之外它还有效。当我想发送这封电子邮件时,更糟糕的是电子邮件看起来不像以前那样。

Spanned html = Html.fromHtml(..);
email.setmHtmlMessage(Html.toHtml(html));

是否有任何解决方案可以修复它并让它看起来像以前一样?

2 个答案:

答案 0 :(得分:1)

使用Html.fromHtml(htmldata)将html设为跨区字符串,并将其设置为edittext。

答案 1 :(得分:1)

getImageHTML需要在单独的线程上运行。有很多方法可以做到这一点。对于此特定任务,我建议您使用AsyncTask,因为您将更新UI组件。

此外,setText应位于AsyncTask&#39; onPostExecute