我创建了一个从远程服务器加载数据并返回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);
答案 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>
找到有关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);
我希望这个答案对你来说是一个很好的解决方案。