SwipeRefreshLayout с scrollView и макета выше

У меня есть следующий макет

<android.support.v4.widget.SwipeRefreshLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >
            //some views here
        </LinearLayout>

        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >
        <TableLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:stretchColumns="*" >
        </TableLayout>

    </LinearLayout>

</android.support.v4.widget.SwipeRefreshLayout>

Проблема заключается в том, когда я просматриваю таблицу, я не могу снова прокручивать ее, потому что запускается swipelayout. Как я могу запускать swiperefresh только тогда, когда вид первого вида таблицы виден?

Ответы

Ответ 1

Я обнаружил, что если вы замените ScrollView на android.support.v4.widget.NestedScrollView, поведение прокрутки будет работать так, как вы ожидаете.

Ответ 2

Сделайте свою собственную реализацию SwipeRefreshLayout и переопределите canChildScrollUp таким образом:

    @Override
public boolean canChildScrollUp() {
    if (scrollView != null)
        return scrollView.canScrollVertically(-1);

    return false;
}

просто замените любой подкласс ScrollView.