我需要recyclerview将它的最后一项滚动到它自己的中间。我的意思是我需要使用LinearLayoutManager的recyclerview的las元素不要停留在recyclerview的底部,而是滚动到它的中间。 这是实现这个目标的简单方法吗?
答案 0 :(得分:0)
您可以使用RecyclerView.ItemDecoration
在最后一项上添加额外的下边距。它最终会看起来像这样:
public class TopMarginDecoration
extends RecyclerView.ItemDecoration {
@Override
public void getItemOffsets(outRect, view, parent, state) {
int position = parent.getChildAdapterPosition(view);
if (position + 1 == parent.getAdapter().getItemCount()) {
// get height of recyclerview
// get height of child view
// calculate required space to center the child view
outRect.bottom += calculatedSpace;
}
}
}
您可以在“活动”或“片段”中使用RecyclerView.addItemDecoration(…)
将其组合在一起。
答案 1 :(得分:0)
final LinearLayoutManager llm = new LinearLayoutManager(context,LinearLayoutManager.VERTICAL,false);
mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
if (recyclerView.getAdapter().getItemCount() == (llm.findLastCompletelyVisibleItemPosition() + 1)) {
Toast.makeText(MainActivity.this, "Sholled", Toast.LENGTH_SHORT).show();
}
}
});