我有一個回調,在通過LinearLayoutManager.smoothScrollToPosition()
程序化滾動到RecyclerView的某個項目後觸發。用戶點擊一個項目,右邊的項目滾動到RecyclerView的頂部。我對LinearLayoutManager進行了分類,使其始終捕捉到該項目的頂部。
這適用於滾動事件被觸發的情況,但是當RecyclerView已經處於正確的位置時,我沒有得到onScrollStateChanged
回調,因爲沒有滾動發生。無論如何,是否有辦法獲得該事件?就像事先決定RecyclerView是否需要滾動一樣?檢查RecyclerView是否需要滾動
回答
我發現下面的解決辦法自己:
// get the view the user selected
View view = mLayoutManager.findViewByPosition(index);
// get top offset
int offset = view.getTop();
if (offset == 0) { // the view is at the top of the scrollview
showDetailViewInternal(event);
} else {
// scrolling
}
如果它是列表中的最後一項,它將不起作用,因爲它永遠不會滾動到頂部。 –
希望下面的代碼將有助於
if(LinearLayoutManager.findFirstCompletelyVisibleItem() == yourDesiredPosition) {
//do your stuff
} else {
LinearLayoutManager.scrollToPositionWithOffset(yourDesiredPosition, offset);
//onScrollStateChanged would be trigger then.
}
不,這只是告訴我,我正在尋找的項目是完全可見的屏幕上。它沒有告訴我關於滾動位置的任何信息。該項目可能是可見的,但在屏幕的底部,然後RecyclerView將滾動。 – Alf
我對你的要求有一個想法。如果在這種情況下,所有適配器項目都不覆蓋整個屏幕,則不會觸發滾動事件。嘗試將透明視圖添加到適配器佈局,並在不包含整個屏幕的情況下使其顯示在最後一個項目中。爲透明視圖指定一個固定的高度,以便它離開屏幕。 – user320676
爲什麼這意味着滾動事件不會被解僱?無論如何,我發現比將透明視圖添加到我的佈局更好的解決方案。看到我上面的答案。 – Alf
- 1. 檢查RecyclerView是否滾動無法正常工作
- 2. 確定UIWebView是否需要滾動
- 3. 如何檢查scrollview/recyclerview是向上還是向下滾動android
- 4. 檢查osKernalSysTick()是否需要環繞?
- 5. 檢查是否仍然需要blob
- 6. 何時檢查是否需要GC?
- 7. 需要檢查文件是否存在?
- 8. 檢查XSLT是否需要參數?
- 9. 需要幫助檢查是否爲{}
- 10. WCF UserNamePasswordValidator是否需要檢查PrimaryIdentity.IsAuthenticated?
- 11. 線程需要檢查是否連續
- 12. angularjs - 檢查是否需要$ scope。$ apply
- 13. 檢查當前活動是否需要活動(同一父母)
- 14. 如何檢測我的recyclerview是否跳過滾動框架?
- 15. 檢查UIWebView是否滾動到底部
- 16. 檢查滾動是否被觸發
- 17. 如何檢查網頁是否滾動?
- 18. 如何檢查ScrollView是否可滾動
- 19. 檢查wx.lib.scrolledpanel.ScrolledPanel是否正在滾動
- 20. 檢查兒童recyclerview是否回收
- 21. RecyclerView需要沿着活動
- 22. Java Socket BufferedReader是否需要檢查和檢查數據?
- 23. 如何檢查服務器是否需要重新啓動
- 24. 如何檢查Tomcat6是否已停止並需要啓動
- 25. 檢查滾動條是否向下滾動一半
- 26. 檢查Windows窗體滾動條是否一直向下滾動?
- 27. 檢查滾動條是否可以在WebBrowser中集中/滾動
- 28. HtmlElement中的CssClassSet類是否需要檢查類是否存在?
- 29. 是否需要檢查jQuery庫是否已加載?
- 30. 是否需要檢查js變量是否爲d3選擇?
你可以檢查,如果你想滾動到該項目(位置)已經在調用之前的屏幕* LinearLayoutManager.smoothScrollToPosition()* – Bugdr0id
這是不夠的,因爲它可能在屏幕上,但不在視圖的頂部,在這種情況下無論如何滾動都會發生。 – Alf
如何layoutManager.findFirstCompletelyVisibleItemPosition() – SoroushA