У меня есть Webview, встроенный внутри scrollview. Сам Webview имеет области с вертикальной прокруткой.
Теперь, если я попытаюсь прокрутить веб-просмотр, scrollview перехватывает touchhevent и прокручивает весь webview, вместо этого перемещается только маленький прокручиваемый div.
Как заставить scrollview работать только в том случае, если веб-просмотр не хочет прокручиваться?
Наше решение использует обратный вызов Javascript через интерфейс Javascript. Каждый раз, когда часть пользовательского интерфейса, который прокручивается внутри WebView, затрагивается, прослушиватель вызывается через java-скрипт, и этот прослушиватель вызывает requestDisallowInterceptTouchEvent в родительском элементе WebViews.
Это не оптимально, но самое приятное решение, найденное на данный момент. Если пользователь прокручивает очень быстро, слой в WebView не будет прокручиваться, но при нормальной скорости прокрутки он отлично работает.
Использовать TouchyWebView.java
public class TouchyWebView extends WebView {
public TouchyWebView(Context context) {
super(context);
}
public TouchyWebView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public TouchyWebView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public boolean onTouchEvent(MotionEvent event){
requestDisallowInterceptTouchEvent(true);
return super.onTouchEvent(event);
}
}
В файле макета:
<yourclasapath.TouchyWebView
android:id="@+id/description_web"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
В моем случае у меня есть веб-просмотр в контейнере scrollview, а scrollview и webview - полный экран. Я смог исправить это, переопределив событие onTouch в своем webView touchListener.
scrollView = (ScrollView)findViewById(R.id.scrollview);
webView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
scrollView.requestDisallowInterceptTouchEvent(true);
return false;
}
}
@Janusz, у меня была та же проблема. Мое решение основано на расширенном представлении прокрутки в паре с правильной компоновкой. Я написал ответ на тот же вопрос здесь. Дайте мне знать, если у вас есть проблемы с реализацией или вопросы, и, пожалуйста, сообщите, помогает ли это :)