在recyclerview中禁用滚动时,如何显示弹跳效果?

时间:2019-05-23 05:24:35

标签: android android-recyclerview linearlayoutmanager

我有一个recyclerview,它可以水平滚动。当用户单击某个项目时,我已禁止滚动recyclerview。现在,如果用户尝试在锁定列表时滚动列表,我想显示一个弹跳效果,表明他/她无法进一步滚动。

例如:

我有一个10 items的列表,用户单击了5th item。现在滚动已锁定,当用户尝试滚动时,我想显示用户无法滚动的弹跳效果。

这是我的自定义LinearLayoutManager

import android.content.Context
import android.support.v7.widget.LinearLayoutManager
import android.util.AttributeSet


class CustomLinearLayoutManager : LinearLayoutManager {
  private var isScrollEnabled = true

  constructor(context: Context) : super(context)

  constructor(context: Context, orientation: Int, reverseLayout: Boolean) : super(context, orientation, reverseLayout)

  constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int, defStyleRes: Int) : super(context, attrs, defStyleAttr, defStyleRes)


  fun setScrollEnabled(flag: Boolean) {
    this.isScrollEnabled = flag
  }

  override fun canScrollHorizontally(): Boolean {
    //Similarly you can customize "canScrollHorizontally()" for managing horizontal scroll
    return isScrollEnabled && super.canScrollHorizontally()
  }
}

这是我的recyclerview启用/禁用滚动代码:

val layoutManager = CustomLinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)
binding.recyclerView.layoutManager = layoutManager
layoutManager.setScrollEnabled(false)

1 个答案:

答案 0 :(得分:0)

您可以使用有弹性的recyclerview来实现此功能,并使用下面的链接对其进行BoucncyRecyclerview的使用,否则,您可以使用OverScroll effect of recyclerview使用recyclerview的过度滚动效果