我看到一個問題,RecyclerView在Nexus 6P API 25 7.1.1模擬器上不一致地激活SwipeRefreshLayout。 我們都在支持庫的最新版本:SwipeRefreshLayout停止工作/ RecyclerView不一致觸發SwipeRefreshLayout
compile 'com.android.support:recyclerview-v7:25.3.1'
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:design:25.3.1'
compile 'com.android.support:support-v4:25.3.1'
我有與被前綴時刷新拉動發生(添加項目到頂部)一個數據集RecyclerView,它在我的佈局被聲明像這樣:
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/swipeRefresh"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" />
</android.support.v4.widget.SwipeRefreshLayout>
我能夠觸發該姿勢約2-3倍,將項目添加到RecyclerView但隨後不再允許我來觸發拉刷新。我們從來沒有調用SwipeRefreshLayout.setEnabled(false)。看起來RecyclerView在內部對canScrollVertically(-1)的響應是真的,儘管我們位於項目列表的頂部。
我們處理的唯一有趣的事情是我們覆蓋了RecyclerView的佈局管理器,讓我們滾動至下:
LinearLayoutManager llm = new LinearLayoutManager(getActivity());
llm.setStackFromEnd(true); // Start with most recent messages (enables scroll-to-bottom)
recyclerView.setLayoutManager(llm);