Я создал WebView, который загружает HTML-файлы из папки ресурсов.Теперь, когда я собираюсь поместить 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;
}
};
}
}
Любая помощь будет принята с благодарностью.Спасибо!