我使用支持库v21中的SwipeRefreshLayout。它与List或ScrollView等可滚动内容完美配合,但不能使用静态布局:
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/refresh_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="100dp"
android:gravity="center"
android:text="Content"/>
</ScrollView>
</android.support.v4.widget.SwipeRefreshLayout>
此代码效果很好。
视频: Example
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/refresh_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="match_parent"
android:layout_height="100dp"
android:gravity="center"
android:text="Content"/>
</android.support.v4.widget.SwipeRefreshLayout>
那不是。
视频: Example
是否可以在SwipeRefreshLayout中使用不可滚动的内容?
答案 0 :(得分:9)
此问题现已在支持库的版本24.2.0中得到修复。
这是支持库版本21中的回归,这是由于onTouchEvent()
的{{1}}回调中的拖动计算为removed而导致的,仅保留在SwipeRefreshLayout
{1}}回调。因此onInterceptTouchEvent()
仅在拦截触摸来自(触摸消费)的孩子SwipeRefreshLayout
的事件时才能正常工作。有趣的是,当View
最初在支持库的19.1.0版本中引入时,此问题也存在,但在版本20中为fixed。
我已在https://code.google.com/p/android/issues/detail?id=87789
的问题跟踪器上报告了此情况可以通过扩展SwipeRefreshLayout
并将其SwipeRefreshLayout
回调重定向到onTouchEvent()
来修补此问题,直到它返回true:
onInterceptTouchEvent()