也许我的问题是一种愚蠢的问题,但 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);
}
截图:
大概,
getDescription()
正在返回转义数据。检查从 getDescription()
返回的值。如果它包含大量 <
和 >
,则这些 <
和 >
会转换为实体引用。您需要将它们转换回 <
和 >
。
基于这个答案,我下载了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);
}