在其当前select中居中ListView

有谁知道一种方法来中心一个ListView基于它的当前select或setSelectionselect集?

我没有看到这个其他StackOverflow问题没有答案: Android ListView中心select

谢谢,凯文

Solutions Collecting From Web of "在其当前select中居中ListView"

我还没有尝试过任何这个,但基于当前的select,你可以使用public void smoothScrollByOffset (int offset)让视图滚动到你想要的位置,以便您的select是在视图的中间?

首先,使用getHeight获取ListView的高度,它以像素为单位返回ListView的高度。

然后,使用相同的方法获取行的视图的高度。

然后,使用setSelectionFromTop并传递一半的ListView的高度减去该行高度的一半。

就像是:

 int h1 = mListView.getHeight(); int h2 = v.getHeight(); mListView.setSelectionFromTop(position, h1/2 - h2/2); 

或者,也可以不用math计算,而是从顶部select一个常量,但是我认为在不同的设备上可能会更脆弱,因为setSelectionFromTop的第二个参数看起来像是像素而不是设备独立像素。

我没有testing过这个代码,但是只要你的行高度大致相同,它就可以工作。

您需要有滚动视图和所选项目的视图。 那么你可以简单地做:

 scrollView.smoothScrollTo(0, selectedView.getTop() - (scrollView.getHeight() / 2) + (selectedView.getHeight() / 2), 0); 

这将使滚动视图精确地位于selectedView上