NestedScrollView setOnScrollChangeListener api 21

问题描述 投票:2回答:3

你好伙计我正试图在我的onScrolled处理一个recyclerView事件,那是在NestedScrollView内部。

到目前为止,我找到了setOnScrollChangeListener,但是这个方法是API 23,而我的目标是API 21,任何想法在API 21中处理这个问题?

android android-recyclerview android-nestedscrollview onscrolllistener
3个回答
1
投票

过了一段时间我有了一个想法,我已经停止听RecyclerView滚动并开始听NestedScrollView onScroll事件。

我设法使用此片段制作我的loadOnDemand recyclerView

    nsv_posts_timeline.setOnScrollChangeListener(
            NestedScrollView.OnScrollChangeListener {
                                _, scrollX, scrollY, _, oldScrollY ->

        if(scrollY > oldScrollY){
            val totalItens = timelineAdapter.itemCount

            val currentView = rv_timeline.findChildViewUnder(scrollX.toFloat(), scrollY.toFloat())
            val childPosition = rv_timeline.getChildAdapterPosition(currentView)

            if((totalItens/2) - (stepSize/2) <= childPosition && !isLoading){
                isLoading = true
                                          //skip , take
                timelinePresenter.loadMore(totalItens, 5)
            }
        }
    })

isLoading是一个类属性,当我的回调从服务器返回时,我将其更改为false


0
投票

你可以使用api 23下面的ViewTreeObserver#addOnScrollChangedListener()来实现它:

mRecylerview.getViewTreeObserver().addOnScrollChangedListener(
    new ViewTreeObserver.OnScrollChangedListener() {
      @Override public void onScrollChanged() {
          int x = toolbar.getScrollX();
          int y = toolbar.getScrollY();
      }
    });

0
投票

我认为您正在将ViewOnChangeScrollListener与View.OnScrollChangeListener一起使用。请使用NestedScrollView.OnScrollChangeListener:

 scvProduct.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
        @Override
        public void onScrollChange(NestedScrollView nestedScrollView,int scrollX, int scrollY, int oldScrollX, int oldScrollY) {

            Log.e("ProductFragment","position button " + topPositionButton + " scrollY " + scrollY);
            if(scrollY > oldScrollY){
                Log.e("ProductFragment","down");
            }
            else{
                Log.e("ProductFragment","up");
            }
        }
    });

image compare NestedScrollview and View OnScrollChangeListener

© www.soinside.com 2019 - 2024. All rights reserved.