我创建了从资产文件夹加载html文件的WebView。 现在,当我要将GestureDetecter放入WebView时,它将停止工作ScrollView& html页面内的链接。 但当我删除GestureDetecter ScrollView&链接工作正常。
以下是我的完整代码,
(我使用了两个html文件1.html& 2.html,你可以使用任何html文件代替它,它可以允许滚动并将两个文件放入资产文件夹)
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.LinearLayout;
public class DemoWebViewActivity extends Activity {
private MyWebView mWebView;
private WebViewClient client;
private LinearLayout lymain;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
lymain = new LinearLayout(getApplicationContext());
lymain.setOrientation(1);
mWebView = new MyWebView(getApplicationContext());
mWebView.setWebViewClient(client);
mWebView.setVerticalScrollBarEnabled(false);
mWebView.loadUrl("file:///android_asset/1.html");
lymain.addView(mWebView);
setContentView(lymain);
}
class MyWebView extends WebView
{
Context context;
GestureDetector gd;
public MyWebView(Context context) {
super(context);
// TODO Auto-generated constructor stub
this.context = context;
gd = new GestureDetector(context, sogl);
}
public boolean onTouchEvent(MotionEvent event) {
return (gd.onTouchEvent(event)
|| super.onTouchEvent(event));
};
GestureDetector.SimpleOnGestureListener sogl = new GestureDetector.SimpleOnGestureListener() {
public boolean onDown(MotionEvent event) {
return true;
}
public boolean onFling(MotionEvent event1, MotionEvent event2, float velocityX, float velocityY) {
if (event1.getRawX() > event2.getRawX() && StrictMath.abs(event1.getRawY()-event2.getRawY())<100) {
mWebView.loadUrl("file:///android_asset/2.html");
} else if(event1.getRawX() < event2.getRawX() && StrictMath.abs(event1.getRawY()-event2.getRawY())<100){
mWebView.loadUrl("file:///android_asset/1.html");
} else {
}
return true;
}
};
}
}
任何帮助将不胜感激。谢谢!
答案 0 :(得分:2)
尝试使用这样的两个参数构造函数:
public MyWebView(Context context, AttributeSet attrs) {
super(context, attrs);
gd = new GestureDetector(context, sogl);
}