Контекст: Я загружаю HTML-страницу в веб-браузере Android.На странице есть три кнопки HTML.В веб-просмотре я хочу выполнить пролистывание вверх / вниз, вправо / влево.
Проблема: HTML-код в веб-представлении хорошо работал до добавления GestureDetector с веб-представлением.После добавления кодов GestureDetector элементы HTML (например, кнопки) больше не работают.
Где я сейчас нахожусь: Вот то, что я пробовал до сих пор.
package com.example.android.testwebgesture;
public class WebActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MyWebView webview = new MyWebView(this);
webview.getSettings().setDomStorageEnabled(true);
webview.getSettings().setJavaScriptEnabled(true);
webview.getSettings().setAppCacheEnabled(true);
webview.getSettings().setLoadsImagesAutomatically(true);
webview.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
webview.getSettings().setMediaPlaybackRequiresUserGesture(false);
webview.loadUrl("file:///android_asset/myhtmlpage.html");
setContentView(webview);
}
class MyWebView extends WebView {
Context context;
GestureDetector gd;
public MyWebView(Context context) {
super(context);
this.context = context;
gd = new GestureDetector(this.context, sogl);
}
@Override
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 downEvent, MotionEvent moveEvent, float velocityX, float velocityY) {
boolean result = false;
//showToast("Fling");
return result;
}
@Override
public boolean onDoubleTap(MotionEvent event) {
Log.d(DEBUG_TAG, "onDoubleTap: " + event.toString());
//showToast("Double tapped");
return true;
}
@Override
public boolean onSingleTapUp(MotionEvent event) {
//showToast("Single tap");
return true;
}
@Override
public boolean onScroll(MotionEvent event1, MotionEvent event2, float distanceX,
float distanceY) {
}
};
void showToast(String text) {
Toast.makeText(context, text, Toast.LENGTH_LONG).show();
}
}
}
Из других сообщений SO я обнаружил, что добавление super.onTouchEvent(event)
решает проблему.Но, к сожалению, у меня все еще есть эта проблема.Любая помощь приветствуется!