我目前有一个RecyclerView
,允许用户滚动一个长列表。但是,当视图到达数据集中的最后一项时,视图会停止向右滚动。
问题:如何让用户进一步滚动,以便RecyvlerView
中的最后一项能够在屏幕上向上滚动?
答案 0 :(得分:2)
这称为“过度滚动”。这种行为是在Gingerbread中引入的。
要启用它,请使用
public void setOverScrollMode(int mode);
来自Android docs:
public void setOverScrollMode(int mode)
在API级别9中添加为此视图设置过度滚动模式。有效 过滚动模式是OVER_SCROLL_ALWAYS(默认), OVER_SCROLL_IF_CONTENT_SCROLLS(仅在视图时允许过度滚动 content大于容器)或OVER_SCROLL_NEVER。设置 视图的过滚动模式仅在视图有效时才会生效 能够滚动。
参数模式此视图的新过度滚动模式。
您可以阅读有关此here的更多信息。
答案 1 :(得分:0)
在您的recyclerViewAdapter的onBindViewHolder
上,在与您的position
相匹配的list.size() - 1
上捕获具有条件的最后一项,然后以编程方式设置下边距,因此:
@Override
public void onBindViewHolder(@NonNull NewsItemViewHolder holder, int position) {
if(position == getCurrentList().size() - 1){
RecyclerView.LayoutParams layoutParams =
(RecyclerView.LayoutParams) itemHolderRootView.getLayoutParams();
layoutParams.setMargins(layoutParams.leftMargin,layoutParams.topMargin,layoutParams.rightMargin, 300);
}
}
您可能要通过
将300
下边距乘以屏幕密度
DisplayMetrics metrics = getResources().getDisplayMetrics();
int bottomMargin = 300 * metrics.densityDpi;
因为它在各个屏幕上都不同。