将ListView置于其当前选择的中心

Kev*_*ker 10 android

有没有人知道基于其当前选择或使用setSelection的选择集来集中ListView的方法?

我确实看到了这个没有任何答案的其他StackOverflow问题:Android ListView中心选择

谢谢,凯文

Bri*_*ley 19

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

然后,使用相同的方法获取行的View的高度.

然后,使用setSelectionFromTop并传入ListView高度的一半减去行高度的一半.

就像是:

int h1 = mListView.getHeight();
int h2 = v.getHeight();

mListView.setSelectionFromTop(position, h1/2 - h2/2);
Run Code Online (Sandbox Code Playgroud)

或者,您可能只是从顶部为偏移量选择常量而不是数学,但我认为它可能在不同的设备上更脆弱,因为setSelectionFromTop的第二个参数看起来像素而不是设备无关的像素.

我没有测试过这段代码,但是只要你的行的高度大致相同,它就应该可以工作.


小智 3

我还没有尝试过任何这些,但根据当前的选择,您可以使用public void smoothScrollByOffset (int offset)将视图滚动到您想要的位置,以便您的选择位于视图的中间吗?