ScrollViewChangeListener 没有按预期工作

ScrollViewChangeListener not working as expected

我已经定义了以下代码,所以如果用户在滚动视图的顶部,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
            }
        })

您可以试试这个以获得 recyclerview 的最高位置

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