在某些Web浏览器中,巨大的图像会自动调整大小以适应屏幕.
是否可以在Android WebView中执行相同的操作?
网页只包含图片,也许添加一些JavaScript可以做到这一点?
有人已经这样做了吗?
注意:我事先并不知道图像的大小.
是的,这是可能的.您可以尝试使用以下代码设置WebView布局.它会将所有图像(大于Device Screen Width
)调整为屏幕宽度.这适用于两个方向(肖像和风景)
webview.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
您可以稍后添加额外的边距/填充以使间距正确.
webview.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
有效,但已被弃用.这是没有LayoutAlgorithm.SINGLE_COLUMN的另一种解决方案,使用CSS:
@SuppressLint("NewApi") private openWebView() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { webView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.TEXT_AUTOSIZING); } else { webView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.NORMAL); } String data = "your HTML content"; webView.loadDataWithBaseURL("file:///android_asset/", getHtmlData(data), "text/html", "utf-8", null); } private String getHtmlData(String bodyHTML) { String head = ""; return "" + head + "" + bodyHTML + ""; }
您可以让浏览器调整图像大小以适合屏幕的最大宽度:
也可以将其高度调整为WebView的视口:
但是,调整宽度和高度都会导致图像拉伸.要根据哪一方最适合调整宽度或高度,您可以考虑使用一些JavaScript,如下所示:
你可以用这个:
WebView webView = (WebView) findViewById(R.id.myWebView); webView.getSettings().setLoadWithOverviewMode(true); webView.getSettings().setUseWideViewPort(true);
在此处找到此解决方案: 如何设置webview的初始缩放/宽度