My app is currently composed by a ViewPager
that have several Fragments
. In a specific Fragment
I have a SwipeRefreshLayout
with a ScrollView
and into this container, a HorizotalListView of type TwoWayView
.
The problem is when i swipe horizontally in the ListView
the vertical scroll for the SwipeRefreshLayout
isn't disabled and sometimes it breaks the horizontal swipe during the action.
This is what I tried to do to resolve it:
horizListView.setOnTouchListener(new ListView.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
// Disallow ScrollView to intercept touch events.
mSwipeRefreshLayout.requestDisallowInterceptTouchEvent(true);
v.getParent().requestDisallowInterceptTouchEvent(true);
break;
case MotionEvent.ACTION_UP:
// Allow ScrollView to intercept touch events.
mSwipeRefreshLayout.requestDisallowInterceptTouchEvent(false);
v.getParent().requestDisallowInterceptTouchEvent(false);
break;
}
// Handle HorizontalScrollView touch events.
v.onTouchEvent(event);
return true;
}
});
And here is my layout:
<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent">
<TextView
android:id="@+id/tv_info1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:textStyle="bold"
android:textSize="@dimen/text_medium"
android:textColor="@color/light_gray"
android:text="@string/place_proposal" />
<org.lucasr.twowayview.TwoWayView
android:orientation="horizontal"
android:id="@+id/horizlistview"
android:layout_height="230dp"
android:scaleType="centerCrop"
android:drawSelectorOnTop="false"
android:layout_width="fill_parent" />
<TextView
android:id="@+id/tv_info2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/light_gray"
android:textSize="@dimen/text_medium"
android:textStyle="bold"
android:padding="10dp"
android:text="@string/actual_position"
android:paddingTop="5dp" />
<ViewFlipper xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/vf"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<include
android:id="@+id/include_w"
layout="@layout/include_wicard_homescreen" />
<include
android:id="@+id/include_no_w"
layout="@layout/include_no_wicard" />
</ViewFlipper>
</LinearLayout>
</ScrollView>
</android.support.v4.widget.SwipeRefreshLayout>
If anyone can help me it would be great.