我有一个带有WebView的android-app(Android SDK 10)。在那个WebView上,我必须使用具有固定位置的元素。现在我知道,固定元素存在问题,但HTML中包含此代码:
<meta name="viewport"
content="width=100%;
initial-scale=1;
maximum-scale=1;
minimum-scale=1;
user-scalable=no;">
这适用于Webview:
WebView mWebView = (WebView) findViewById(R.id.webView1);
mWebView.getSettings().setBuiltInZoomControls(true);
mWebView.getSettings().setSupportZoom(true);
mWebView.setVerticalScrollBarEnabled(true);
mWebView.loadUrl("path/to.html");
我可以在使用zoomcontrolls时进行缩放。但是,多点触控和pinchzoom会扭曲页面。
是否有可能禁用pich-和multitouchzoom但保持zoom-controlls工作?
根据Vikalp Patel的建议,我找到了这个解决方案:
CustomWebView mWebView = (CustomWebView) findViewById(R.id.webView1);
mWebView.loadUrl("path/to.html");
CustomWebView.java
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.webkit.WebView;
public class CustomWebView extends WebView {
/**
* Constructor
*/
public CustomWebView(Context context) {
super(context);
}
/**
* Constructor
*/
public CustomWebView(Context context, AttributeSet attrs) {
super(context, attrs);
}
/*
* (non-Javadoc)
*
* @see android.webkit.WebView#onTouchEvent(android.view.MotionEvent)
*/
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getPointerCount() > 1) {
this.getSettings().setSupportZoom(false);
this.getSettings().setBuiltInZoomControls(false);
} else {
this.getSettings().setSupportZoom(true);
this.getSettings().setBuiltInZoomControls(true);
}
return super.onTouchEvent(event);
}
}
layout.xml中的实现
<package.path.CustomWebView
...
/>
希望,这有助于某人。
答案 0 :(得分:0)
我查看了WebView的源代码,并得出结论,没有优雅的方法来实现您的要求。
我最终做的是继承WebView并覆盖OnTouchEvent
。在OnTouchEvent
ACTION_DOWN
中,我使用MotionEvent.getPointerCount()
检查有多少指针。如果有多个指针,我会调用setSupportZoom(false)
,否则我会调用setSupportZoom(true)
。然后我拨打super.OnTouchEvent()
。
这将在滚动时有效禁用缩放(从而禁用缩放控件),并在用户即将缩放时启用缩放。这不是一个好方法,但到目前为止它对我来说效果很好。
请注意,getPointerCount()
是在2.1中引入的,所以如果你支持1.6,你将不得不做一些额外的事情。
答案 1 :(得分:0)
Try to the following code
WebView mWebView = (WebView) findViewById(R.id.webView1);
mWebView.getSettings().setSupportZoom(true);
mWebView.setVerticalScrollBarEnabled(true);
mWebView.loadUrl("path/to.html");