Как сделать вертикальную прокрутку в веб-видах, которые находятся внутри Scrollview?

1

У меня есть Webview, встроенный внутри scrollview. Сам Webview имеет области с вертикальной прокруткой.

Теперь, если я попытаюсь прокрутить веб-просмотр, scrollview перехватывает touchhevent и прокручивает весь webview, вместо этого перемещается только маленький прокручиваемый div.

Как заставить scrollview работать только в том случае, если веб-просмотр не хочет прокручиваться?

  • 0
    привет @Janusz Януш Я столкнулся с той же проблемой. Вы нашли решение для этого? если да, пожалуйста, напишите как ваш ответ
Теги:
webview
scrollview
touch-event

4 ответа

0
Лучший ответ

Наше решение использует обратный вызов Javascript через интерфейс Javascript. Каждый раз, когда часть пользовательского интерфейса, который прокручивается внутри WebView, затрагивается, прослушиватель вызывается через java-скрипт, и этот прослушиватель вызывает requestDisallowInterceptTouchEvent в родительском элементе WebViews.

Это не оптимально, но самое приятное решение, найденное на данный момент. Если пользователь прокручивает очень быстро, слой в WebView не будет прокручиваться, но при нормальной скорости прокрутки он отлично работает.

  • 2
    Можете ли вы поделиться кодом для этого, который вы использовали.
  • 0
    Поделитесь кодом, пожалуйста.
0

Использовать 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"
                 />
0

В моем случае у меня есть веб-просмотр в контейнере 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;
        }
   }
0

@Janusz, у меня была та же проблема. Мое решение основано на расширенном представлении прокрутки в паре с правильной компоновкой. Я написал ответ на тот же вопрос здесь. Дайте мне знать, если у вас есть проблемы с реализацией или вопросы, и, пожалуйста, сообщите, помогает ли это :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню