gpt4 book ai didi

android - 在 Android 4.4 的 Webview 中单击表单时禁用缩放

转载 作者:搜寻专家 更新时间:2023-11-01 08:00:15 25 4
gpt4 key购买 nike

我的应用程序中有一个 WebView,它在 HTML 中有一个带有可编辑文本字段的表单。当用户点击这些字段之一时,WebView 会稍微放大,这是我不希望的。这只发生在 Android 4.4 中,因为我为旧版本缩放 WebView 的方式(请参见下面的代码)。

我看过 Disable zoom when clicking on form fields within a WebView? ,它解决了我对旧 Android 版本的问题,使用 WebSettings.setDefaultZoom(ZoomDensity.FAR) 解决了问题,但该设置在 4.4 中已弃用。即便如此,我已经尝试了多种组合,包括设置此属性,并且我的 WebView 仍然被放大。

创建 WebView 的代码:

public View createView(float parentWidth) {

mWebView = new ObservableWebView(mContext);
mWebView.getSettings().setJavaScriptEnabled(true);

//Listener for Console Messages
mWebView.setWebChromeClient(new MyWebChromeClient());

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT){
mWebView.setInitialScale(Globals.convertDpToPx(100));
} else{
WebSettings settings = mWebView.getSettings();
settings.setSupportZoom(false);
settings.setBuiltInZoomControls(false);
settings.setDisplayZoomControls(false);
}

loadURL();
return mWebView;
}

public void loadURL() {
mWebView.clearHistory();
mWebView.removeAllViews();
mWebView.loadUrl(mData.getUrl());
}

在此先感谢您的帮助。

最佳答案

您可以将标记添加到 HTML 页面的头部:

<meta name="viewport" content="user-scalable=no, width=device-width">

而且,如果您不能更改原始 HTML,则可以在页面加载到您的 WebViewClient 后运行一些 JavaScript 代码来更改它。像这样的东西:

@Override
public void onPageFinished(WebView view, String url) {
view.loadUrl("javascript:"
+ "var newMeta = document.createElement('meta');"
+ "newMeta.setAttribute('name', 'viewport');"
+ "newMeta.setAttribute('content', 'user-scalable=no, width=device-width');"
+ "document.getElementsByTagName('head')[0].appendChild(newMeta);"
);
super.onPageFinished(view, url);
}

我已经在运行 KitKat 的 Samsung Galaxy Tab 4 10.1 上对其进行了测试。在其他设备上,此代码会产生一些副作用,因此最好仅在您使用 KitKat 或更高版本时执行它。

关于android - 在 Android 4.4 的 Webview 中单击表单时禁用缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22229241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com