为什么 WebView 无法正确渲染原始 HTML?

问题描述 投票:0回答:2

也许我的问题是一种愚蠢的问题,但 webview 不解释 html 标签。我搜索过但没有发现任何类似的问题。如果您有任何想法,请告诉我。

这是我的代码:

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        // Get context of application
        mContext = getActivity().getApplicationContext();

        // Assign layout to fragment
        View view = inflater.inflate(R.layout.dialog_product_info, container, false);

        mWebView = (WebView) view.findViewById(R.id.webView);
        mWebView.setBackgroundColor(getResources().getColor(R.color.transparent));

        return view;
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        getDialog().setTitle(mProduct.getName());

        mWebView.loadDataWithBaseURL(null, "<HTML>" + mProduct.getDescription() + "</HTML>", "text/html", "utf-8", null);

    }

截图:

enter image description here

android html webview
2个回答
0
投票

大概,

getDescription()
正在返回转义数据。检查从
getDescription()
返回的值。如果它包含大量
&lt;
&gt;
,则这些
<
>
会转换为实体引用。您需要将它们转换回
<
>


0
投票

基于这个答案,我下载了commons-lang3-3.3.2-bin.zip文件并将其添加到我的lib文件夹中,并将代码更改为以下内容。现在一切正常。

@Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        getDialog().setTitle(mProduct.getName());

        String description = mProduct.getDescription();
        description = StringEscapeUtils.unescapeHtml4(description);
        mWebView.loadDataWithBaseURL(null, "<HTML>" + description + "</HTML>", "text/html", "utf-8", null);
    }
© www.soinside.com 2019 - 2024. All rights reserved.