我的活动布局如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="${relativePackage}.${activityClass}" >
<include layout="@layout/window_title" />
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerHorizontal="true"
android:layout_below="@+id/linear_layout"/>
</RelativeLayout>
以下是我如何配置它:
// Enable JavaScript.
WebView myWebView = (WebView) findViewById(R.id.webView);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
// Settings so page loads zoomed-out all the way.
webSettings.setLoadWithOverviewMode(true);
webSettings.setUseWideViewPort(true);
webSettings.setBuiltInZoomControls(true);
以下是我的清单文件中的版本设置:
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="17" />
我正在尝试在WebView中加载此页面:
https://new.livestream.com/lcboise
页面加载得很好,但我不能捏缩放。我尝试了不同的WebView设置组合(上面,包括未列出的其他组合),但它不会缩放。
观察:
1)在EXACT相同的WebView中加载我正在使用的不同页面(https://lcboise.infellowship.com/UserLogin)允许我缩放。
2)我的主要测试设备,无法正常工作,是运行Android的v4.4.3的HTC One。
3)我可以在我正在使用运行Android的v2.3.3的旧测试设备上加载和缩放直播页面。
页面本身是否有可能破坏HTC One上运行的WebView?如果是这样,任何猜测可能会这样做?
更新[解决方案]:
以下是我必须添加到WebView以使缩放变为可以工作的内容:
myWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
String javascript="javascript:document.getElementsByName('viewport')[0].setAttribute('content', 'initial-scale=1.0,maximum-scale=10.0');";
view.loadUrl(javascript);
}
});
答案 0 :(得分:11)
这是您链接的页面具有以下视口元标记:
<meta name="viewport" content="width=1024, maximum-scale=1.0, target-densitydpi=device-dpi">
有效的页面具有不同的视口元标记。 maximum-scale
位告诉WebView不允许放大超过指定的数量。
该网站也应该在任何现代移动浏览器中被破解。将最大规模设置为较低的值,因为它不是非常适合移动设备和#34;所以它可能只是网站上的一个错误。您是否尝试过与所有者联系,也许他们可以在服务器端修复它?
在WebView中,您无法做很多事情,不会导致其他网站呈现错误。您可以尝试注入JS以changing the meta tag作为最后的手段修复页面。
答案 1 :(得分:4)
你有没有尝试过这个建议?
webSettings.setSupportZoom(true);
请参阅Disable pinch zoom in WebView?
请注意,链接是关于禁用缩放的。但是,默认情况下,您的缩放可能会被某些用户建议禁用。
答案 2 :(得分:4)
添加这两行以启用缩放以放大webview
webview.getSettings().setSupportZoom(true);
webview.getSettings().setBuiltInZoomControls(true);
答案 3 :(得分:1)
缩放:
webSettings.getSettings().setBuiltInZoomControls(true);
禁用:
webSettings.getSettings().setBuiltInZoomControls(false);
答案 4 :(得分:0)
wv.getSettings()setBuiltInZoomControls(真)。 wv.getSettings()setDisplayZoomControls(假);
为我完美地工作。
答案 5 :(得分:0)
在我的问题上,由于视口限制,我成功完成了上述js注入。 onPageFinished 不适用于我的情况,但是 onLoadResource 可以解决问题。
@Override
public void onLoadResource(WebView view, String url) {
view.loadUrl("javascript:document.getElementsByName(\"viewport\")[0].setAttribute(\"content\", \"width=device-width, initial-scale=1.0, maximum-scale=5.0, user-scalable=yes\");");
super.onLoadResource(view, url);
}
答案 6 :(得分:0)
要允许在 Android WebView 上进行缩放,唯一需要的设置是:
viewport
具有正确的值;