【问题标题】:Android WebView Zooming using the ScaleDetector使用 ScaleDetector 进行 Android WebView 缩放
【发布时间】:2010-07-07 13:44:24
【问题描述】:

你好,

当用户捏合手指并将手指靠近/远离时,是否可以支持缩放 WebView(类似于默认浏览器)。我正在使用 2.2 并认为这可以使用 ScaleGestureDetector。问题是我似乎找不到设置比例的方法。 WebView.getScale() 返回通过 zoomIn() 和 ZoomOut() 更改的当前比例,但我找不到 setScale() 或默认设置缩放并让操作系统处理它的选项。

安迪

【问题讨论】:

    标签: android webview zooming


    【解决方案1】:

    用途:

    webview.getSettings().setBuiltInZoomControls(true);
    

    进行捏缩放并将默认的放大/缩小按钮放在屏幕上。

    【讨论】:

    【解决方案2】:

    您需要在 WebView 中实现 onTouchEvent(MotionEvent)。

    然后在那个事件中,将 MotionEvent 传递给 ScaleGestureDetector 以便它可以处理它,然后调用 super。

    class ScalableWebView extends WebView implements ScaleGestureDetector.OnScaleGestureListener
    {
        ScaleGestureDetector mScaleDetector = new ScaleGestureDetector(this, this);
    
        public boolean onTouchEvent(MotionEvent event)
        {
            if(mScaleDetector.onTouchEvent(event))
                 return true;
    
            return super.onTouchEvent(event);
        }
    
        boolean onScaleBegin(ScaleGestureDetector detector) 
        {
         //handle scale event begin
        }
    
        boolean onScale(ScaleGestureDetector detector) 
        {
         //handle scale event
        }
    
        boolean onScaleEnd(ScaleGestureDetector detector) 
        {
         //handle scale event end
        }
    
    }
    

    【讨论】:

    • 感谢您的回复。我熟悉使用 ScaleGestureDetector 并将 MotionEvent 传递给它,正如您在上面的代码中所描述的那样。如果我错了,我的道歉,但上面的代码实际上不会缩放 WebView?由于 WebView 上没有 setScale(),我如何使用检测器中的 onScale 方法执行缩放?
    • onTouch 方法实际上会阻止您与自定义 WebView 中的 HTML 进行交互...
    【解决方案3】:

    有一个setScale,试试这个:

    webView.setInitialScale((int)(100 * webView.getScale());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-07
      • 2018-01-16
      • 2013-05-11
      相关资源
      最近更新 更多