我需要使用的网页具有 320px 宽的背景,网页上的所有内容都按照相同的宽度进行布局。在屏幕较大的设备上,网页上的所有内容都居中但很小。
我已经尝试了我发现的所有东西,但似乎没有任何效果。我尝试过的事情是
<meta name="viewport" content="width=320" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no, target-densitydpi=device-dpi" />
和其他几种组合
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
webView.setInitialScale(percent);
我还找到了一个似乎可以解决问题的 Javascript 解决方案,但仅适用于第一个加载的 url。我无法弄清楚它为什么会发生,除了它似乎onPageStarted()
并且onPageFinished()
在第一页被调用了两次。
这就是我的做法
WebView webView = (WebView) findViewById(R.id.webview);
WindowManager manager = (WindowManager) getSystemService(WINDOW_SERVICE);
final DisplayMetrics metrics = new DisplayMetrics();
manager.getDefaultDisplay().getMetrics(metrics);
metrics.widthPixels /= metrics.density;
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.d("url", url);
view.loadUrl(url);
return true;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
Log.d("page", "started " + url);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
Log.d("page", "finished " + url);
view.loadUrl("javascript:var scale = " + metrics.widthPixels +
" / document.body.scrollWidth; document.body.style.zoom = scale;");
}
});
WebSettings webSettings = webView.getSettings();
webSettings.setUseWideViewPort(true);
webSettings.setLoadWithOverviewMode(true);
webSettings.setJavaScriptEnabled(true);
webView.loadUrl(url);
那么有什么想法吗?