1. ホーム
  2. android

[解決済み] ScrollView内のRecyclerviewのスクロールがスムーズでない

2022-04-15 10:10:43

質問

私のアプリでは RecyclerView の中に ScrollView ここで RecyclerView は、そのコンテンツに応じた高さを 本ライブラリ . スクロールは動作していますが RecyclerView . の上をスクロールすると ScrollView 自体はスムーズにスクロールしています。

を定義するために使用しているコードです。 RecyclerView :

LinearLayoutManager friendsLayoutManager = new LinearLayoutManager(getActivity().getApplicationContext(), android.support.v7.widget.LinearLayoutManager.VERTICAL, false);
mFriendsListView.setLayoutManager(friendsLayoutManager);
mFriendsListView.addItemDecoration(new DividerItemDecoration(getActivity().getApplicationContext(), null));

RecyclerView の中にある ScrollView :

<android.support.v7.widget.RecyclerView
    android:layout_marginTop="10dp"
    android:layout_marginBottom="10dp"
    android:id="@+id/friendsList"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

解決方法は?

してみてください。

RecyclerView v = (RecyclerView) findViewById(...);
v.setNestedScrollingEnabled(false);

別の方法として、サポートデザインライブラリを使用してレイアウトを変更することができます。現在のレイアウトは以下のような感じでしょうか。

<ScrollView >
   <LinearLayout >

       <View > <!-- upper content -->
       <RecyclerView > <!-- with custom layoutmanager -->

   </LinearLayout >
</ScrollView >

と修正することができます。

<CoordinatorLayout >

    <AppBarLayout >
        <CollapsingToolbarLayout >
             <!-- with your content, and layout_scrollFlags="scroll" -->
        </CollapsingToolbarLayout >
    </AppBarLayout >

    <RecyclerView > <!-- with standard layoutManager -->

</CoordinatorLayout >

しかし、これは長い道のりです。カスタムリニアレイアウトマネージャーで問題ないのであれば、リサイクラービューのネストスクロールを無効にすればいいのです。

編集(2016/4/3)

v 23.2 リリースでは、サポートライブラリのすべてのデフォルトの LayoutManager s. 私はそれをテストしませんでしたが、おそらくあなたが使っていたそのライブラリよりもそれを好むでしょう。

<ScrollView >
   <LinearLayout >

       <View > <!-- upper content -->
       <RecyclerView > <!-- with wrap_content -->

   </LinearLayout >
</ScrollView >