2

我正在按照此链接上的答案在屏幕上一次跨越一项列表视图。它对我有用,但是项目向上移动并适合屏幕的滚动和动画运行不顺畅。

我搜索并发现setSelectionFromTop方法导致了这种情况。

但是,如果我使用smoothScrollToPosition,那么我无法满足在屏幕上放置一个项目的要求。

请帮我解决这个问题。我应该做什么才能实现两者

  1. 在屏幕上一次适合一项列表视图
  2. 滚动应该流畅
4

1 回答 1

0

首先,要一次只在屏幕上显示一个项目,您需要将每个项目的高度设置为与 ListView 的高度相匹配。

public View getView(int position, View convertView, ViewGroup parent) {
    ...
    int totalHeight = listView.getHeight();
    int rowHeight = totalHeight / getCount();
    // Set the row height for each of the rows
    ...

一次只显示一个项目,在您使用 setSelectionFromTop() 或 smoothScrollToPosition() 的情况下,它最终会得到相同的结果。所以你现在可以使用 smoothScrollToPosition()。

另一种方法是尝试设置选择。

listView.setSelection(position)
listView.setSelectionAfterHeaderView()

setSelectionAfterHeaderView 会将 ListView 滚动到正确的位置。

希望这可以帮助。

于 2013-05-07T00:15:02.707 回答