0

我正在用RecyclerView.OnscrollListener和onscrolled-Method解決滯後問題。 (我想隱藏工具欄/操作欄,當我滾動列表 - 沒有協調員佈局)在滾動RecyclerView(OnscrollListener)時延遲/錯誤的y座標

當我滾動「快」時,從onScrolled-Method收到的數字是正確的。但是當我慢慢地滾動我的列表時,我在y軸上收到一些「跳躍」。

這是一個已知的問題,或者我做錯了什麼? 有沒有人有這方面的經驗?

使用的監聽器是下列之一: https://github.com/mzgreen/HideOnScrollExample/blob/master/app/src/main/java/pl/michalz/hideonscrollexample/listener/parttwo/HidingScrollListener.java

在我的Android Studio中,我得到的(其中u可以看到跳躍)日誌是:

01-13 17:21:33.611 D/Ilias: Offset: 0 *** dx: 0 *** dy: 9 *** totalScrolled: 0 
    01-13 17:21:33.631 D/Ilias: Offset: 9 *** dx: 0 *** dy: 28 *** totalScrolled: 9 
    01-13 17:21:33.641 D/Ilias: Offset: 37 *** dx: 0 *** dy: -5 *** totalScrolled: 37 
    01-13 17:21:33.691 D/Ilias: Offset: 32 *** dx: 0 *** dy: -22 *** totalScrolled: 32 
    01-13 17:21:33.701 D/Ilias: Offset: 10 *** dx: 0 *** dy: 10 *** totalScrolled: 10 
    01-13 17:21:33.711 D/Ilias: Offset: 20 *** dx: 0 *** dy: 29 *** totalScrolled: 20 
    01-13 17:21:33.731 D/Ilias: Offset: 49 *** dx: 0 *** dy: -2 *** totalScrolled: 49 
    01-13 17:21:33.751 D/Ilias: Offset: 47 *** dx: 0 *** dy: -19 *** totalScrolled: 47 
    01-13 17:21:33.761 D/Ilias: Offset: 28 *** dx: 0 *** dy: 11 *** totalScrolled: 28 
    01-13 17:21:33.781 D/Ilias: Offset: 39 *** dx: 0 *** dy: 28 *** totalScrolled: 39 
    01-13 17:21:33.801 D/Ilias: Offset: 67 *** dx: 0 *** dy: -4 *** totalScrolled: 67 
    01-13 17:21:33.811 D/Ilias: Offset: 63 *** dx: 0 *** dy: -23 *** totalScrolled: 63 
    01-13 17:21:33.831 D/Ilias: Offset: 40 *** dx: 0 *** dy: 7 *** totalScrolled: 40 
    01-13 17:21:33.851 D/Ilias: Offset: 47 *** dx: 0 *** dy: 25 *** totalScrolled: 47 
    01-13 17:21:33.861 D/Ilias: Offset: 72 *** dx: 0 *** dy: -7 *** totalScrolled: 72 
    01-13 17:21:33.881 D/Ilias: Offset: 65 *** dx: 0 *** dy: -24 *** totalScrolled: 65 
    01-13 17:21:33.901 D/Ilias: Offset: 41 *** dx: 0 *** dy: 9 *** totalScrolled: 41 
    01-13 17:21:33.921 D/Ilias: Offset: 50 *** dx: 0 *** dy: 26 *** totalScrolled: 50 
    01-13 17:21:33.931 D/Ilias: Offset: 76 *** dx: 0 *** dy: -8 *** totalScrolled: 76 
    01-13 17:21:33.951 D/Ilias: Offset: 68 *** dx: 0 *** dy: -24 *** totalScrolled: 68 
    01-13 17:21:33.971 D/Ilias: Offset: 44 *** dx: 0 *** dy: 9 *** totalScrolled: 44 
    01-13 17:21:33.981 D/Ilias: Offset: 53 *** dx: 0 *** dy: 26 *** totalScrolled: 53 
    01-13 17:21:34.001 D/Ilias: Offset: 79 *** dx: 0 *** dy: -6 *** totalScrolled: 79 
    01-13 17:21:34.021 D/Ilias: Offset: 73 *** dx: 0 *** dy: -23 *** totalScrolled: 73 
    01-13 17:21:34.031 D/Ilias: Offset: 50 *** dx: 0 *** dy: 11 *** totalScrolled: 50 
    01-13 17:21:34.051 D/Ilias: Offset: 61 *** dx: 0 *** dy: 29 *** totalScrolled: 61 
    01-13 17:21:34.071 D/Ilias: Offset: 90 *** dx: 0 *** dy: -5 *** totalScrolled: 90 
    01-13 17:21:34.081 D/Ilias: Offset: 85 *** dx: 0 *** dy: -23 *** totalScrolled: 85 
    01-13 17:21:34.101 D/Ilias: Offset: 62 *** dx: 0 *** dy: 11 *** totalScrolled: 62 
    01-13 17:21:34.121 D/Ilias: Offset: 73 *** dx: 0 *** dy: 31 *** totalScrolled: 73 
    01-13 17:21:34.131 D/Ilias: Offset: 104 *** dx: 0 *** dy: -3 *** totalScrolled: 104 
    01-13 17:21:34.151 D/Ilias: Offset: 101 *** dx: 0 *** dy: -23 *** totalScrolled: 101 
    01-13 17:21:34.171 D/Ilias: Offset: 78 *** dx: 0 *** dy: 37 *** totalScrolled: 78 
    01-13 17:21:34.181 D/Ilias: Offset: 115 *** dx: 0 *** dy: 34 *** totalScrolled: 115 
    01-13 17:21:34.201 D/Ilias: Offset: 149 *** dx: 0 *** dy: 13 *** totalScrolled: 149 
    01-13 17:21:34.261 D/Ilias: Offset: 162 *** dx: 0 *** dy: 33 *** totalScrolled: 162 
    01-13 17:21:34.271 D/Ilias: Offset: 195 *** dx: 0 *** dy: 4 *** totalScrolled: 195 
    01-13 17:21:34.281 D/Ilias: Offset: 199 *** dx: 0 *** dy: 5 *** totalScrolled: 199 
    01-13 17:21:34.301 D/Ilias: Offset: 204 *** dx: 0 *** dy: 3 *** totalScrolled: 204 
    01-13 17:21:34.321 D/Ilias: Offset: 207 *** dx: 0 *** dy: 2 *** totalScrolled: 207 
    01-13 17:21:34.341 D/Ilias: Offset: 209 *** dx: 0 *** dy: 2 *** totalScrolled: 209 
    01-13 17:21:34.351 D/Ilias: Offset: 211 *** dx: 0 *** dy: 1 *** totalScrolled: 211 

我希望你能幫助我!

Thx

回答

1

好的,我發現了這個問題。

我的特殊問題是基於Recyclerview的「相對」y軸座標值。我解釋:

我們的活動頂部有一個工具欄。 我們使用recyclerView的片段位於工具欄「下方」。

所以在我們的例子中,工具欄的初始高度爲224px。 在我們的OnscrollListener中每調用一次「onMoved」,我們都會減小工具欄的高度,從而設置滾動距離的平移。

那麼,這裏發生了什麼? 隨着每次減少工具欄高度的迭代,recyclerView的「高度」都會增加。因此,如果我們在頂端增加RecyclerView,500像素高度的RecyclerView(例如)的y座標當然不是​​相同的y座標。

________________ 
1 | Toolbar  | 
2 |    | height: 200px 
3 |________________| 
1 | RecyclerView | 
2 |    | 
3 |    | <---- y-coordinate of the recyclerView 
4 |    |  at this point: 256 (for example) 
5 |    | 
6 |    | 
7 |    | 
8 |    | 
9 |    | 
10 |________________| 


    ________________ 
1 | Toolbar  | 
2 |________________| 
1 | RecyclerView | 
2 |    | 
3 |    | 
4 |    | <---- y-coordinate of the recyclerView 
5 |    |  at this point: 380 (for example) 
6 |    | 
7 |    | 
8 |    | 
9 |    | 
10 |    | 
11 |________________| 

也許這將幫助ü的人在未來:)