如果我理解你的问题,你想在你的滚动视图中实现拉动刷新。相反,要使用您正在使用的库,我建议您实现 SwipeRefreshLayout https://developer.android.com/reference/android/support/v4/widget/SwipeRefreshLayout.html 这是一个实现拉动刷新的布局,就像 Google+ 或 Gmail 的应用程序中一样。
这是在 xml 中实现
SwipeRefreshLayout
的示例:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
android:layout_width="match_parent" android:layout_height="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android" >
<android.support.v4.widget.SwipeRefreshLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/swipe_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/garae_scroll"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ScrollView>
</android.support.v4.widget.SwipeRefreshLayout>
</FrameLayout>
注意
强烈不建议将 Scrollview/Listview 放入 Scrollview/Listview 中。第一个原因与性能有关,Romain Guy 在一个视频中解释了这一点 https://www.youtube.com/watch?v=wDBM6wVEO70
您可以使用androidx SwipeRefreshLayout。为此,您首先需要在 gradle 中导入它:
dependencies {
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"
}
接下来,在 XML 中,用
ScrollView
:包装您希望能够滑动刷新的视图(在您的情况下为
androidx.swiperefreshlayout.widget.SwipeRefreshLayout
)
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/swipeRefreshLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
...>
...
</ScrollView>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
setOnRefreshListener
。刷新完成后,调用 setRefreshing(false)
,否则刷新循环将永远停留在那里(在下面的示例中,刷新是同步的,在这种情况下,它只会出现在侦听器的末尾)。以 Kotlin 为例:
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
val swipeRefreshLayout = this.findViewById<SwipeRefreshLayout>(R.id.swipeRefreshLayout)
swipeRefreshLayout.setOnRefreshListener {
// Insert your code to refresh here
swipeRefreshLayout.setRefreshing(false)
}