2017-07-21 40 views
1

當用戶滾動recyclerview時,我需要一個back_to_top按鈕來滾動時顯示,一個load_more按鈕在滾動時消失並在到達列表末尾時顯示。 OnScrollListener如下:如何在滾動時避免回收站抖動?

mRecyclerViewHome.addOnScrollListener(new OnScrollListener() { 
      @Override 
      public void onScrolled(RecyclerView recyclerView, int dx, int dy) { 
       super.onScrolled(recyclerView, dx, dy); 

       int visibleItemCount = layoutManager.getChildCount(); 
       int totalItemCount = layoutManager.getItemCount(); 
       int pastVisibleItems = layoutManager.findFirstVisibleItemPosition(); 
       if (pastVisibleItems + visibleItemCount >= totalItemCount) { 
        mButtonLoadMore.setVisibility(View.VISIBLE); 
        Log.i(TAG, "reach bottom detected"); 
       } 

       // TODO: 7/20/2017 remove shaking 
       if (dy < 0) { // scrolling up 
        mButtonLoadMore.setVisibility(GONE); 
        mButtonToTop.setVisibility(VISIBLE); 
       } 

       if (dy > 0) { 
        mButtonToTop.setVisibility(GONE); 
       } 
      } 
     }); 

此代碼有效。但問題是,如果在recyclerview正在滾動但尚未停止時,我會中斷並觸摸屏幕並執行另一個滾動手勢,否則回收站視圖的視圖會在移動時發生抖動。我想這是因爲我在代碼中使用dy參數,以便它跟蹤dy的值並導致視圖抖動?無論如何要避免這種震動,同時檢測用戶是否正在向上或向下滾動?

回答

1

你可以嘗試禁用項目漫畫家

mRecyclerViewHome.setItemAnimator(null); 
+0

我試過了,還在抖。它像動亂一樣震動,不像動畫。 – Robin