显示高度不同的项目列表

时间:2017-08-16 23:01:15

标签: java android android-recyclerview

我有一个包含各种高度项目的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文档。我不确定最后一行是什么意思,因为滚动条大部分都有用,而且那些文档没有进一步解释。我尝试过这个并没有取得任何成功。

这种方法的唯一解释是

  

如果要支持滚动条,请覆盖此方法。

哪个没用。

0 个答案:

没有答案