我试图在ScrollView中有一个RecyclerView。我的问题是,当我滚动RecyclerView时,这并不“平滑”:一旦你松开手指,滚动就会立即停止。
我在片段中的布局是:
我尝试禁用嵌套滚动:
mRecyclerView.setNestedScrollingEnabled(false)
以及mRecyclerView的包装内容:
android:layout_height="wrap_content"
获得我想要的平滑滚动,但通过这种方式,RecyclerView的高度比它应该的要小(并且它不再滚动,所以我看不到一些项目)。
我目前正在使用支持库23.4.0(我也尝试了23.2.1,同样的问题)
有什么帮助吗?
这个问题毁了我的夜晚。:)
当< code > recycle view 在第一个屏幕上时(无需滚动即可看到),前面的视图会影响其高度。当< code > recycle view 最初完全不可见时(需要向下滚动整个屏幕),其高度是正确的。
当<code>LinearLayout<code>在<code>ScrollView<code>内测量其子级时,它会传递作为<code>测量RecyclerView将此规范传递给LayoutManager
,如果它不为空,则它遵守传递的高度,即使它是未指定的
。
扩展< code > recycle view 并覆盖< code > recycle view # on measure ,当高度测量规格为< code >未指定时,只需将零传递给< code>super.onMeasure。
Java:
@Override
protected void onMeasure(int widthSpec, int heightSpec) {
super.onMeasure(
widthSpec,
MeasureSpec.getMode(heightSpec) == MeasureSpec.UNSPECIFIED ? 0 : heightSpec
)
}
科特林:
override fun onMeasure(widthSpec: Int, heightSpec: Int) {
super.onMeasure(
widthSpec,
if (MeasureSpec.getMode(heightSpec) == MeasureSpec.UNSPECIFIED) 0
else heightSpec
)
}