2014-07-21 119 views
9

你好我所有我剛剛創建了一個演示,以使用新的Android L小部件RecyclerView.I也實現了使用SwipeRefreshLayout的Pull-To-Refresh,但現在的問題是我如何實現粘性這裏頭,因爲當我嘗試設置Android的粘性標題RecyclerView/Section Header RecyclerView

mRecyclerView.setOnScrollListener(new OnScrollListener() { 

    @Override 
    public void onScrolled(int arg0, int arg1) { 

    } 

    @Override 
    public void onScrollStateChanged(int arg0) { 
     // TODO Auto-generated method stub 

    } 
}); 

我只得到這2種方法,所以不要有任何想法,我怎麼能處理這...

請幫助..

+0

請解釋你正在尋找什麼類型的粘頭?只有一個標題?任何數量的類別樣式標題將在滾動時佔據最後一個位置? – Simon

+1

請參考Instagram .. like Instagram我正在尋找粘性標題,或者你可以說節標題,每行將有該標題頂部,直到其內容滾動! – Pramod

回答

5

由於以前的答案沒有提供可靠的解決方案,我建議我的FlexibleAdapter庫RecyclerView,即能同時處理所有以下功能:

  • 置頂功能的標題與章節,與工作全部3個LayoutManagers和ViewPager。
  • 選擇模式。
  • 具有自動映射的多項目類型。
  • 預定義的ViewHolders。
  • 具有選擇一致性的可擴展項目。
  • 可拖拽和滑動即關閉。
  • 具有可跨越文本的動畫異步過濾器。
  • 滾動動畫。
  • 帶適配器綁定的EndlessScroll。
  • UndoHelper & ActionMode Helper。
  • FastScroller。
  • ...等等。

背後的想法是爲了避免從頭開始一遍又一遍的每個項目自定義適配器創建和一個圖書館有更多的功能,而不是依賴於僅支持1或3他們與你不同的庫無法合併。

+4

你可以請回顧一下這篇文章:[如何提供個人開源庫?](https://meta.stackexchange.com/q/229085)?您似乎在各個地方發佈關於您的圖書館的信息,而無需根據上下文定製您的答案。 –

+0

好的,我讀過它了。我總是試圖停留在上下文中,但事實上,以前的評論認爲,所提出的解決方案不起作用。所以,這就是爲什麼我提出我的圖書館。 – Davidea

5

public void onScrolled(int dx, int dy)

這些都是您收到onScrolled兩個參數,這意味着,該RecyclerView在X軸和Y軸變化的像素數......所以也許你想要做的是:

@Override 
public void onScrolled(int dx, int dy) { 
    if(dx < 0) // going up 
     showSitckyHeader(); 
} 

您可以通過添加最小滾動量來進一步改進此實現。例如:

int totalScrolled = 0; 
@Override 
public void onScrolled(int dx, int dy) { 
    totalScrolled += dx; 
    if(totalScrolled < MIN_SCROLL) 
     showSitckyHeader(); 
    if(dx > 0) 
     totalScrolled = 0; 
} 

@Override 
public void onScrollStateChanged(int newState) { 
    if(newState == SCROLL_STATE_IDLE || newState = SCROLL_STATE_SETTLING) 
     totalScrolled = 0; 
} 

甚至可以進一步實現速度,計算時間,但這些類型的實現更加棘手,您必須親自測試它。

+0

感謝您的指導。我會試着用你的方法,但是擔心是什麼時候recycleview滾動我必須找到哪個項目在頂部,然後我必須在該項目中找到標題視圖並設置保證金或有沒有更好的方法? – Pramod

+0

我通過「sticky header」理解的是,當用戶向上滾動時,標題可以隨時顯示。這意味着實際的頭文件不是RecyclerView視圖的一部分,但它位於FrameLayout中,其中包含Header和RecyclerView。 RecyclerView上的第一個視圖將是一個空白的視圖,其大小與標題相同。每當列表上下移動時,只需上下移動標題即可。一個有用的方法是https://developer.android.com/reference/android/view/View.html#offsetTopAndBottom(int)不要使用邊緣效果。 – Budius

+0

沒有..你讓我錯了..我想像Instagram這樣的粘頭,其中每行有一個headerview很重要,直到該項目不會滾動上... – Pramod