android - 过度滚动效果不会出现在我的 swiperefreshlayout 内的 recyclerview 中

标签 android android-recyclerview overscroll

我有一个 fragment ,其中包含一个带有 RecyclerView 的 SwipeRefreshLayour。

此 recyclerView 不显示过度滚动效果。我尝试了很多东西,比如使用这个:

 android:isScrollContainer="true"
 android:overScrollMode="always"

通过样式自定义颜色不起作用

fadingEdge, fadingEdgeLengh, requiresFadingEdge...

滑动刷新功能正常,显示如下:

enter image description here

我不明白:

enter image description here

最佳答案

我只是通过覆盖 SwipeRefreshLayout 并使用它而不是默认实现来解决它:

import android.content.Context
import android.util.AttributeSet
import android.view.View
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout

class SwipeRefreshLayoutWithRecyclerViewOverscroll : SwipeRefreshLayout {

    constructor(context: Context) : super(context)
    constructor(context: Context, attrs: AttributeSet) : super(context, attrs)

    override fun onStartNestedScroll(child: View, target: View, nestedScrollAxes: Int): Boolean =
        (child.canScrollVertically(1) && super.onStartNestedScroll(child, target, nestedScrollAxes))

}

我正在使用一个 RecyclerView,它是一个线性垂直列表,child.canScrollVertically(1) 检查此列表当前是否位于最底部。如果它在列表的底部,onStartNestedScroll 返回 false,允许 RecyclerView 处理用户的上拉 Action ,从而显示过度滚动效果。

注意:这只显示底部边缘过度滚动,而不显示顶部边缘,因为我不想看到下拉刷新动画和顶部过度滚动边缘。

关于android - 过度滚动效果不会出现在我的 swiperefreshlayout 内的 recyclerview 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45927783/

相关文章:

android - 如何静默添加通知?

java - 无法解析符号 "actionBarActivity"- Android

android - 如何在 recyclerView 单元格的顶部添加边到边叠加层?

android - 如何在我的 gridview 项 (RecyclerView) 之间添加原生广告?

android - 使 SwipeRefreshLayout 动画不可见

android - 从 Android 应用程序发送到 Nodejs 服务器的编码问题,解码后是否有空格?

android - react native Flatlist renderItem 不更新

java - 使用SearchView过滤器后RecyclerView无法排序

ios - 允许 UIScrollView 滚动过去的内容而不弹跳

android - 如何检测 Android ListView 中的过度滚动?