ScrollViewに次のようなRecyclerViewがありました。
_<ScrollView
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<!--other stuff-->
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content">
<Android.support.v7.widget.RecyclerView
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:visibility="gone"/>
</LinearLayout>
<!--other stuff-->
</ScrollView>
_
そしてRecyclerView
のアイテムはRelativeLayout
であり、その中にはEditText
と他のビューがあります。そのRelativeLayout
とEditText
の_layout_height
_は、両方とも_wrap_content
_です。ユーザーは、各アイテムの高さが異なるように、長さ/行の制限なしでそのEditText
に入力できます。
次に、Adapter
のgetItemCount()
が真の値を返しますが、onBindViewHolder()
が間違った回数(必要以上に)呼び出されるため、すべての項目を表示するには不十分です。
これは、recyclerView.setNestedScrollingEnabled(false)
と書いた場合にのみ発生することがわかりました。しかし、この行を削除することはできません。そうすると、RecyclerView
はスムーズにスクロールせず、ScrollView
およびScrollView
自体の中の他のビューと調和しないためです。
これは6.0では発生しますが、4.1では発生しません。
このページでGoogleとやり取りしました: https://code.google.com/p/Android/issues/detail?id=213914 と彼は、これがRecyclerView
。そのページにアクセスして、質問と私の目標をよりよく理解することができます(問題を示す小さなサンプルプロジェクトがあります)。私は今でも彼に同意しないので、問題を解決したいです。助けてください、よろしくお願いします。
私は自分で解決策を見つけました:ScrollView
をNestedScrollView
に置き換え、recyclerView.setNestedScrollingEnabled(false)
を保持します。これがNestedScrollView
の目的であるかどうかはわかりませんが、動作します。
注意:
NestedScrollView
はScrollView
の子ではなく、FrameLayout
の子です。adjustResize
を使用したいくつかのバグももたらします。