我有一个包含各种高度项目的RecyclerView的列表。我希望滚动条的行为类似于普通的滚动条,使用一个固定的高度,当用户滚动列表时,它会从页面顶部平滑滚动到底部。
我正在尝试使用自定义的RecyclerView并直接调用computeVerticalScrollExtent和computeVerticalScrollRange,但这些方法表现不正常。
@Override
public int computeVerticalScrollExtent() {
return 3;
}
@Override
public int computeVerticalScrollRange() {
return sizeOfList;
}
通常sizeOfList大概是20左右。出于某种原因,当我向下滚动时,滚动条会立即跳到屏幕底部,并在我继续向下滚动时停留在那里。我可以通过将sizeOfList设置在500左右来解决这个问题。我不确定为什么会这样,因为文档声称我定义的单位将是使用的单位。如果我尝试使用computeVerticalScrollOffset,滚动条永远不会移动。
/** * <p>Compute the vertical extent of the vertical scrollbar's thumb within the vertical range. * This value is used to compute the length of the thumb within the scrollbar's track.</p> * * <p>The range is expressed in arbitrary units that must be the same as the units used by * {@link #computeVerticalScrollRange()} and {@link #computeVerticalScrollOffset()}.</p> * * <p>Default implementation returns 0.</p> * * <p>If you want to support scroll bars, override * {@link RecyclerView.LayoutManager#computeVerticalScrollExtent(RecyclerView.State)} in your * LayoutManager.</p>
这是来自RecyclerView文档。我不确定最后一行是什么意思,因为滚动条大部分都有用,而且那些文档没有进一步解释。我尝试过这个并没有取得任何成功。
这种方法的唯一解释是
如果要支持滚动条,请覆盖此方法。
哪个没用。