【发布时间】:2015-06-29 08:05:21
【问题描述】:
我目前有一个RecyclerView,它允许用户滚动浏览一个长列表。但是,当视图到达数据集中的最后一项时,视图会停止向右滚动。
问题:如何允许用户进一步滚动,以便RecyvlerView 中的最后一项能够在屏幕上进一步向上滚动?
【问题讨论】:
-
你找到解决办法了吗?
标签: android listview scroll android-recyclerview
我目前有一个RecyclerView,它允许用户滚动浏览一个长列表。但是,当视图到达数据集中的最后一项时,视图会停止向右滚动。
问题:如何允许用户进一步滚动,以便RecyvlerView 中的最后一项能够在屏幕上进一步向上滚动?
【问题讨论】:
标签: android listview scroll android-recyclerview
在您的 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;
因为它会因屏幕而异。
【讨论】:
这称为“过度滚动”。这种行为是在 Gingerbread 中引入的。
要打开它,请使用
public void setOverScrollMode(int mode);
来自Android docs:
public void setOverScrollMode(整数模式)
在 API 级别 9 中添加 设置此视图的过度滚动模式。有效的 过度滚动模式为 OVER_SCROLL_ALWAYS(默认), OVER_SCROLL_IF_CONTENT_SCROLLS(仅当视图 内容大于容器),或 OVER_SCROLL_NEVER。环境 视图的过度滚动模式只有在视图是 可以滚动。
参数模式 此视图的新过度滚动模式。
你可以阅读更多关于这个here的信息。
【讨论】: