拖动上的反弹效果在recyclerview android中不起作用

时间:2019-05-23 14:08:33

标签: android android-recyclerview android-touch-event

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

例如:

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

我禁用滚动的工作:

我正在使用以下方法锁定滚动:

class RecyclerViewDisabler(isEnable: Boolean = true) : RecyclerView.OnItemTouchListener {

  var isEnable = true

  init {
    this.isEnable = isEnable
  }

  override fun onInterceptTouchEvent(rv: RecyclerView, e: MotionEvent): Boolean {
    return if(!isEnable){
      rv.scrollState == RecyclerView.SCROLL_STATE_DRAGGING
    }else{
      false
    }
  }

  override fun onTouchEvent(rv: RecyclerView, e: MotionEvent) {}

  override fun onRequestDisallowInterceptTouchEvent(disallowIntercept: Boolean) {}
}

我尝试产生弹跳效果:

override fun onInterceptTouchEvent(rv: RecyclerView, e: MotionEvent): Boolean {
    x = rv.x.toInt()
    y = rv.y.toInt()
    return if(!isEnable){
      if(rv.scrollState == RecyclerView.SCROLL_STATE_DRAGGING){
        rv.smoothScrollBy((x + 1000), y) //Bounce front
      }else{
        rv.smoothScrollBy(x, y) //Bounce back
      }
      rv.scrollState == RecyclerView.SCROLL_STATE_DRAGGING
    }else{
      false
    }
  }

但是它不起作用。我该如何实现?

0 个答案:

没有答案