我希望用户能够导航到RecyclerView
中的某些位置。我可以确定项目的位置,当我使用recycleView.smoothScrollToPosition()
时,它会滚动到正确的项目
问题是这个项目位于屏幕的底部。如何滚动以使项目显示在顶部(它必须是第一个可见项目)。
以下是我用来设置RecyclerView
的代码:
recyclerView = (RecyclerView)findViewById(R.id.recyclerview);
recyclerView.setHasFixedSize(false);
recyclerView.setAdapter(actionAdapter);
final LinearLayoutManager layoutManager = new LinearLayoutManager(InteractionTimelineActivity.this, LinearLayoutManager.VERTICAL, false);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setOnScrollListener(new RecyclerScrollListner());
这就是我滚动的方式:
if (recycleView != null) {
recycleView.smoothScrollToPosition(position + 1);
}
答案 0 :(得分:0)
您需要计算一个屏幕上适合的项目数量,并在滚动时将其用作偏移量!您可以使用findFirstCompletelyVisibleItemPosition()
的方法findLastCompletelyVisibleItemPosition()
和LayoutManager
来计算偏移量,如下所示:
int offset = getLayoutManager()).findLastCompletelyVisibleItemPosition()
- getLayoutManager()).findFirstCompletelyVisibleItemPosition();
一旦你有了偏移量,就可以像这样滚动:
recycleView.smoothScrollToPosition(Math.min(position + offset + 1, adapter.getItemCount()));