Ответ 1
Я обнаружил, что если вы замените ScrollView
на android.support.v4.widget.NestedScrollView
, поведение прокрутки будет работать так, как вы ожидаете.
У меня есть следующий макет
<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 только тогда, когда вид первого вида таблицы виден?
Я обнаружил, что если вы замените ScrollView
на android.support.v4.widget.NestedScrollView
, поведение прокрутки будет работать так, как вы ожидаете.
Сделайте свою собственную реализацию SwipeRefreshLayout и переопределите canChildScrollUp таким образом:
@Override
public boolean canChildScrollUp() {
if (scrollView != null)
return scrollView.canScrollVertically(-1);
return false;
}
просто замените любой подкласс ScrollView.