在recyclerview中滚动区域

时间:2015-07-21 16:11:03

标签: java android android-recyclerview

我需要recyclerview将它的最后一项滚动到它自己的中间。我的意思是我需要使用LinearLayoutManager的recyclerview的las元素不要停留在recyclerview的底部,而是滚动到它的中间。 这是实现这个目标的简单方法吗?

2 个答案:

答案 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();
            }
        }
    });