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

Android 将ListView置于其当前选择的中心,android,Android,是否有人知道一种基于当前选择或带有setSelection的选择集将ListView居中的方法 我确实看到了另一个没有答案的问题: 谢谢, 凯文 < p>我没有尝试过这一点,但是基于当前的选择,您可以使用公共无效StaskScRyByOffice(int偏移)< /> >以使视图滚动到您想要的位置,以便您的选择位于视图的中间?首先,使用GeTeHeT获取ListVIEW的高度,它以像素为单位返回ListView的高度 然后,使用相同的方法获取行视图的高度 然后,使用setSelectionFro

是否有人知道一种基于当前选择或带有setSelection的选择集将ListView居中的方法

我确实看到了另一个没有答案的问题:

谢谢,
凯文

< p>我没有尝试过这一点,但是基于当前的选择,您可以使用<代码>公共无效StaskScRyByOffice(int偏移)< /> >以使视图滚动到您想要的位置,以便您的选择位于视图的中间?

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

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

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

比如:

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

mListView.setSelectionFromTop(position, h1/2 - h2/2);
或者,你可以选择一个常数作为从顶部开始的偏移量,而不是做数学运算,但我认为在不同的设备上它可能更脆弱,因为setSelectionFromTop的第二个参数似乎是以像素为单位的,而不是与设备无关的像素


我还没有测试过这段代码,但只要您的行高度大致相同,它就可以工作。

您需要选择滚动视图和项目视图。然后你可以简单地做:

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

这将使滚动视图正好位于selectedView的中心位置

您好,您能帮我解决这个问题吗。。我有一个ListView,其中只有5个项目,因此ListView不会被滚动。但我想将所选项目设置为居中,而smoothScrollByOffset(int-offset)似乎不起作用。