Android WebView Масштабирование с использованием ScaleDetector - PullRequest
2 голосов
/ 07 июля 2010

HI,

Возможно ли поддерживать масштабирование WebView (аналогично браузеру по умолчанию), когда пользователь сжимает и перемещает свои пальцы ближе / дальше.Я использую 2.2 и думал, что это будет возможно, используя ScaleGestureDetector.Проблема в том, что я не могу найти способ установить масштаб.WebView.getScale () возвращает текущий масштаб, который изменяется с помощью zoomIn () и ZoomOut (), но я не могу найти setScale () или опцию, чтобы установить масштабирование по умолчанию и позволить ОС справиться с этим.

Энди

Ответы [ 3 ]

6 голосов
/ 15 ноября 2010

Используйте:

webview.getSettings().setBuiltInZoomControls(true);

, чтобы сделать масштабирование пинчем и поставить на экране кнопки увеличения / уменьшения по умолчанию.

2 голосов
/ 07 июля 2010

Вам необходимо реализовать onTouchEvent (MotionEvent) в вашем WebView.

Затем в этом случае передать 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
    }

}
0 голосов
/ 20 июля 2013

Есть setScale, попробуйте это:

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