ScrollViewChangeListener无法按预期工作

时间:2019-09-10 09:39:10

标签: android kotlin android-recyclerview scrollview listener

我已经定义了以下代码,因此,如果用户位于滚动视图顶部,则可以使用swiperefreshlayout。

recyclerView.getViewTreeObserver().addOnScrollChangedListener(ViewTreeObserver.OnScrollChangedListener {
        if (recyclerView.scrollY == 0) {
            binding.refreshed!!.isEnabled = true
        } else {
            binding.refreshed!!.isEnabled = false
        }

    })

但是此代码仅在我第一次移动recyclerview时做出反应(顺便说一句,它在开始时位于位置0,执行移动时认为它位于位置0),其余时间永远不会触发监听器

我可能做错了什么?

PD:使用以下代码可以实现所需的行为:

   val layoutManager = LinearLayoutManager(this.context);
        recyclerView.setLayoutManager(layoutManager);
        recyclerView.getViewTreeObserver().addOnScrollChangedListener(ViewTreeObserver.OnScrollChangedListener {


            if (layoutManager.findFirstCompletelyVisibleItemPosition() == 0) {
                binding.refreshed!!.isEnabled = true
            } else {
                binding.refreshed!!.isEnabled = false
            }
        })

1 个答案:

答案 0 :(得分:1)

您可以尝试在recyclerview上获得最高排名

 LinearLayoutManager layoutManager = new LinearLayoutManager(this);
    recyclerView.setLayoutManager(layoutManager);
    if(layoutManager.findFirstCompletelyVisibleItemPosition()==0) {
         binding.refreshed!!.isEnabled = true
    }
    else {
          binding.refreshed!!.isEnabled = false
    }