2015-07-21 123 views
0

我需要recyclerview将其最后一项滚动到其中间。我的意思是我需要使用LinearLayoutManager的recyclerview的las元素,而不是停止在recyclerview的底部,而是滚动到它的中间。 这是一个简单的方法来实现这一点?recyclerview中的滚动区域

+0

对不起,但你的问题还不清楚,你是否想要当你到达RecyclerView的最后一个项目时,你会回到RecyclerView的中间项目? –

+0

你可以添加一个空的页脚查看并手动设置它的高度以匹配最后一项的一半高度?这将实现滚动距离最后一项高度一半的列表的效果。 – Guardanis

回答

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(…)在活动或片段绑了一起。

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