Я создал WebView, который загружает html-файлы из папки ресурсов. Теперь, когда я собираюсь положить GestureDetecter в этот WebView, он перестает работать с ScrollView & ссылками внутри html-страницы. , но когда я удаляю GestureDetecter, как ScrollView & ссылки работают нормально.Handle Touch События внутри WebView в android
Ниже мой полный код,
(я использовал два 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;
}
};
}
}
Любая помощь была бы принята с благодарностью. Благодаря!
Не уверен, если это будет делать что-нибудь для вас, но у меня была проблема, прежде чем, где я получал сенсорную событие с целью помещенной над WebView. Это заставило WebView получать какие-либо данные. Установка mWebView.requestFocus (View.FOCUS_DOWN); как-то его исправил. –
Не исправлено для меня .. !! :-( –
использовать viewpager для прокрутки другого контента, а не прокрутки html .. это не решение, а просто вариант. –