【发布时间】:2010-07-07 13:44:24
【问题描述】:
你好,
当用户捏合手指并将手指靠近/远离时,是否可以支持缩放 WebView(类似于默认浏览器)。我正在使用 2.2 并认为这可以使用 ScaleGestureDetector。问题是我似乎找不到设置比例的方法。 WebView.getScale() 返回通过 zoomIn() 和 ZoomOut() 更改的当前比例,但我找不到 setScale() 或默认设置缩放并让操作系统处理它的选项。
安迪
【问题讨论】:
你好,
当用户捏合手指并将手指靠近/远离时,是否可以支持缩放 WebView(类似于默认浏览器)。我正在使用 2.2 并认为这可以使用 ScaleGestureDetector。问题是我似乎找不到设置比例的方法。 WebView.getScale() 返回通过 zoomIn() 和 ZoomOut() 更改的当前比例,但我找不到 setScale() 或默认设置缩放并让操作系统处理它的选项。
安迪
【问题讨论】:
用途:
webview.getSettings().setBuiltInZoomControls(true);
进行捏缩放并将默认的放大/缩小按钮放在屏幕上。
【讨论】:
您需要在 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
}
}
【讨论】:
有一个setScale,试试这个:
webView.setInitialScale((int)(100 * webView.getScale());
【讨论】: