我有一个在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
的 bug。您可以访问该页面,以便更好地理解问题和我的目标(那里有一个小示例项目显示问题)。即使现在我也不同意他的看法,我想解决这个问题。请帮忙,谢谢。