【问题标题】:Zoom in android cordova app放大 android cordova 应用程序
【发布时间】:2015-05-08 10:39:27
【问题描述】:

我有一个 HTML5 网络应用,我想创建一个 Android 应用。

我做的第一件事是打开 Visual Studio 并使用 webview 制作一个简单的应用程序。在这种情况下,我可以配置我的 webview 的缩放选项。

myWebView.getSettings().setBuiltInZoomControls(true);
myWebView.getSettings().setDisplayZoomControls(false);

一切正常。

然后我想创建相同的应用程序 usig cordova。该应用程序运行良好,但我无法进行缩放,而且我无法配置 Cordova Webview...我尝试自定义 Main Activity,但我不知道如何访问 Cordova Webview 的设置

    super.onCreate(savedInstanceState);
    // Set by <content src="index.html" /> in config.xml
    loadUrl(launchUrl);

    WebSettings settings = this.appView.getSettings();
    settings.setBuiltInZoomControls(true);
    settings.setBuiltInZoomControls(true);

有什么想法吗?谢谢。

编辑 1

你的回答我得到这个错误:

C:\Users\xabier.esteban\Datavis\cordova\hello\platforms\android\src\com\example\
hello\MainActivity.java:35: error: cannot find symbol
        WebSettings settings = super.appView.getSettings();
                                            ^
symbol:   method getSettings()
location: variable appView of type CordovaWebView
1 error
:compileDebugJava FAILED

FAILURE: Build failed with an exception.

What went wrong:
Execution failed for task ':compileDebugJava'.
> Compilation failed; see the compiler error output for details.

Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug
option to get more log output.

BUILD FAILED

Total time: 3.321 secs

【问题讨论】:

  • 我也遇到了同样的问题,无法在带有cordova的Android中启用捏缩放(使用cordova 4.0)。尝试了元视口标签的所有变体。我清楚地记得 Android 通过将 WebSettings 代码添加到 MainActivity.java 来放大以前的 cordova 版本,但 getSettings() 方法似乎已经从 CordovaWebView 中消失了。希望有任何解决方法。
  • crosswalk-project.org/jira/browse/XWALK-3313 : "我们引入 preference API 替换 getSettings。我们需要记录这个新API 并帮助开发人员从 getSettings 迁移”。由于我还没有找到那个 API 的文档,所以这个评论(而不是答案)必须要做,至少现在你知道要搜索什么了..

标签: android cordova webview android-webview


【解决方案1】:

在java文件中

import android.webkit.WebSettings;
import android.os.Build;

public void onCreate(Bundle savedInstanceState)
{
            super.onCreate(savedInstanceState);
            super.init();
            // Set by <content src="index.html" /> in config.xml

            super.loadUrl(Config.getStartUrl());
            //super.loadUrl("file:///android_asset/www/index.html");

            WebSettings settings = super.appView.getSettings();
            settings.setBuiltInZoomControls(true);

            if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
            {
                    settings.setDisplayZoomControls(true);

                    settings.setSupportZoom(true);
            }
}

在html文件中使用meta标签

<meta name="viewport" content="user-scalable=yes,initial-scale=1, maximum-scale=5, minimum-scale=0.25, target-densitydpi=device-dpi"/>

【讨论】:

  • 这不起作用,getSettings() 不再暴露在 CordovaWebView 上。你知道解决方法吗?
  • 不。我最终添加了一个缩放按钮,将地图图像放大 2 倍;对它不太满意,仍然希望由用户手势驱动的常规缩放
  • 这对我有用,但请注意弃用通知。 WebView wv_1 = (WebView)appView.getView(); wv_1.getSettings().setBuiltInZoomControls(true); wv_1.getSettings().setSupportZoom(true); wv_1.getSettings().setDefaultZoom(ZoomDensity.MEDIUM);
【解决方案2】:

我只想补充一点,如上所述,getSettings() 不再在 CordovaWebView 上公开,但您可以使用此解决方法(除了视口元标记外,还为我工作)

WebView wv_1 = (WebView)appView.getView();        

wv_1.getSettings().setBuiltInZoomControls(true);
wv_1.getSettings().setSupportZoom(true);
wv_1.getSettings().setDefaultZoom(ZoomDensity.MEDIUM);

希望对你有帮助

也可以从开发者 android 网站查看此内容

注意:如果您的 targetSdkVersion 设置为“18”或更低,WebView 将在“怪癖模式”下运行,以尽可能避免下面描述的一些行为变化 — 同时仍为您的应用提供性能和网络标准升级。但请注意,Android 4.4 根本不支持单列和窄列布局和默认缩放级别,并且可能存在其他尚未确定的行为差异,因此请务必在 Android 4.4 或更高版本上测试您的应用程序,即使您将 targetSdkVersion 设置为“18”或更低。

【讨论】:

  • (WebView)appView.getView() 返回空对象
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-11
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多