10

レイアウトに問題があります。内部に RecyclerView を含む SwipeRefreshLayout を作成しました。Android 4.2.2+ではすべて正常に動作していますが、Andorid 2.3.4ではRecyclerViewのどの場所でも更新されるため、上にスクロールできず、下にスクロールしてから上にスクロールする必要があります。

これは私のコードです:

<android.support.v4.widget.SwipeRefreshLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/forum_swipe_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    <android.support.v7.widget.RecyclerView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/LVP"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:gravity="center" />
</android.support.v4.widget.SwipeRefreshLayout>

この問題を見つけました: https://code.google.com/p/android/issues/detail?id=78191しかし、解決策はありません。それを修正する方法はありますか?

4

6 に答える 6

6

次のコードを使用して、スクロールアップの問題を修正しました。

private RecyclerView.OnScrollListener scrollListener = new RecyclerView.OnScrollListener() {
    @Override
    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
        LinearLayoutManager manager = ((LinearLayoutManager)recyclerView.getLayoutManager());
        boolean enabled =manager.findFirstCompletelyVisibleItemPosition() == 0;
        pullToRefreshLayout.setEnabled(enabled);
    }
};

次に、1 つ以上のリスナーがあるかどうかに応じて setOnScrollListenerorを使用する必要があります。addOnScrollListener

于 2015-12-15T11:45:27.850 に答える
5

残念ながら、これは既知の問題であり、今後のリリースで修正される予定です。

https://code.google.com/p/android/issues/detail?id=78191

一方、緊急の修正が必要な場合は、オーバーライドcanChildScrollUpしてSwipeRefreshLayout.javaを呼び出してrecyclerView.canScrollVertically(mTarget, -1)ください。ジンジャーブレッドの後に追加されたためcanScrollVertically、そのメソッドをコピーして recyclerview に実装する必要もあります。

または、LinearLayoutManager を使用している場合は、findFirstCompletelyVisibleItemPosition.

ご不便おかけしてすみません。

于 2015-01-04T09:27:50.393 に答える