How to safely turn WebView zooming on and off as needed

前端 未结 9 1231
后悔当初
后悔当初 2020-12-15 01:06

As mentioned in this unanswered question: WebView throws Receiver not registered: android.widget.ZoomButtonsController

By turning the WebView zoom controls on and of

相关标签:
9条回答
  • 2020-12-15 01:56

    webView.getSettings().setBuiltInZoomControls(true); did not work for me.

    dkneller's suggestion did work, however:

        long timeout = ViewConfiguration.getZoomControlsTimeout();
        new Timer().schedule(new TimerTask() {
            @Override
            public void run() {
                webview.destroy();
            }
        }, timeout);
    
    0 讨论(0)
  • 2020-12-15 01:57

    On a Zoom, I found that if one waits for the zoom control to fade out before calling WebView.destroy() a crash no longer occurs. So I've overwritten WebView.destroy() to post a message to a Handler to call WebView.destroy() after a few seconds. From the WebView source we will see the fade-out interval is:

    // The time that the Zoom Controls are visible before fading away
    private static final long ZOOM_CONTROLS_TIMEOUT =
            ViewConfiguration.getZoomControlsTimeout();
    

    So I used ViewConfiguration.getZoomControlsTimeout() + 1000L as the delay before calling WebView's destroy method. So far no crashes.

    0 讨论(0)
  • 2020-12-15 01:57

    If you only want to have pinch zoom working with your webview and you can live without the zoom buttons, you can do this to your webview:

    webView.getSettings().setBuiltInZoomControls(true); // will give pinch zoom
    webView.getSettings().setDisplayZoomControls(false); // but won't display the zoom buttons
    

    adding

    webView.getSettings().setBuiltInZoomControls(true);
    

    in onDestroy / onDestroyView did not help on 3.x.

    0 讨论(0)
提交回复
热议问题