2016-02-28 3 views
0

У меня есть Webview внутри SwipeRefreshLayout, который отлично работает. Но как только мне нужно прокрутить UP внутри webview, функция pull to refresh ist вызывается. Есть ли способ отключить функцию, когда затрагивается конкретная область внутри веб-просмотра? Вот мой LayoutFileОтключить Android SwipeRefreshLayout в определенной области

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/myLayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <android:android.support.v4.widget.SwipeRefreshLayout 
     android:id="@+id/swipeRefreshLayout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     xmlns:android="http://schemas.android.com/apk/res/android"> 

     <WebView 
      android:id="@+id/webview" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      /> 
    </android:android.support.v4.widget.SwipeRefreshLayout> 
</RelativeLayout> 

ответ

0

Вам нужно будет создать прослушиватель прикосновений для веб-просмотра. Там, если координаты события касания находятся в пределах вашей целевой области, вы должны вызвать requestDisallowInterceptTouchEvent для своего родителя (SwipeRefreshLayout). Вам нужно снова включить события касания родителя в событии Up или Cancel.

Что-то вроде этого скелетного кода ниже (родитель ваш взгляд SwipeRefreshLayout):

switch (event.getAction()) { 
    case MotionEvent.ACTION_DOWN: 
     if (touch in target area) { 
      parent.requestDisallowInterceptTouchEvent(true); 
     } 
     break; 
    case MotionEvent.ACTION_CANCEL: 
    case MotionEvent.ACTION_UP: 
     if (disallowed parent) { 
      parent.requestDisallowInterceptTouchEvent(false); 
     } 
     break; 
    default: 
     break; 
    } 

вы также можете попробовать вызвать setEnabled (ложь) на представлении SwipeRefreshLayout вместо requestDisallowInterceptTouchEvent.

Другой вариант, который вы можете рассмотреть, - включить ожидание для обновления, только если прокрутка Y для веб-просмотра равна 0, поэтому, если вы находитесь в верхней части содержимого веб-просмотра. Когда вы начнете прокрутку вниз, вы отключите своего родителя (SwipeRefreshLayout), и когда вы прокрутите резервную копию и достигнете вершины (прокрутите Y == 0), вы снова включите своего родителя.

Смежные вопросы