繁体   English   中英

WebView - 打破长话

[英]WebView - break long words

我创建了一个服务,从远程服务器加载数据并返回HTML数据。 我把这个数据放到我的WebView上。 所有工作都很好但有一个问题:如果某个单词太长,WebView会添加水平滚动。 我添加了CSS文件与break-work,自动换行,但它没有帮助。

JSONObject jsonObject = new JSONObject(strResult);
String content = jsonObject.getString("postContent");
TextView postTitle = (TextView) view.findViewById(R.id.postTitle);
postTitle.setText(jsonObject.getString("postTitle"));
WebView postContent = (WebView) view.findViewById(R.id.postContent);
postContent.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
postContent.getSettings().setLoadWithOverviewMode(true);
postContent.getSettings().setUseWideViewPort(true);
postContent.getSettings().setBuiltInZoomControls(true);
postContent.getSettings().setJavaScriptEnabled(true);
postContent.loadDataWithBaseURL("file:///android_asset/", content, "text/html; charset=utf-8", "utf-8", null);

问题形象

我确实遇到了完全相似的问题,最后意识到我误用了css选项。 只需添加分word-break: break-all; word-break: break-word word-break: break-all; word-break: break-word用于正文和/或标题的word-break: break-all; word-break: break-word到css样式,它已经完成了

<head>
<style type="text/css">
    body {text-align: center; word-break: break-all; word-break: break-word}
    h1 {font-size:large; word-break: break-all; word-break: break-word}
    h2 {font-size:medium; word-break: break-all; word-break: break-word}
</style> </head>

有关css属性的更多详细信息可以在这里那里找到

请小心,因为分word-break选项会严重影响WebView中文本的可读性。 只有在你真正需要时才使用它。

显然:

setLoadWithOverviewMode(true)加载WebView完全缩小

setUseWideViewPort(true)使Webview具有普通视口(例如普通桌面浏览器),而当false视图时,webview将具有约束于其自身尺寸的视口(因此,如果webview为50px * 50px,则视口将具有相同的大小)

所以我建议你不要使用setUseWideViewPort,以下代码适用于类似的工作:

final WebSettings webSettings = webView.getSettings();
                    webSettings.setRenderPriority(WebSettings.RenderPriority.HIGH);
                    webSettings.setEnableSmoothTransition(true);
                    webView.setBackgroundColor(Color.parseColor("#00000000"));
                    String before = "<html><head><style type=\"text/css\">@font-face {font-family: MyFont;src: url(\"file:///android_asset/fonts/w_yekan.ttf\")}body {font-family: MyFont;font-size: 14px;text-align: right;}</style></head><body><div style=\"direction:rtl !important;; text-align:right !important;\">";
                    String after = "</body></html>";
                    String myHtmlString = before + Utils.editString(DoaText) + after;
                    webView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);
                    webView.loadDataWithBaseURL(null, myHtmlString, "text/html", "UTF-8", null);

我希望这个答案对你来说是一个很好的解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM