WebView - 打破长话

时间:2016-12-19 14:26:34

标签: android html css android-layout android-webview

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

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);

Problem Image

2 个答案:

答案 0 :(得分:1)

我确实面临完全相似的问题,最终意识到我误用了css选项。只需将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>

可以在herethere

找到有关css属性的更多详细信息

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

答案 1 :(得分:0)

显然:

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);

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