gpt4 book ai didi

java - 在 Android 中选择列表项时使列表项在屏幕上居中?

转载 作者:行者123 更新时间:2023-12-01 13:10:52 25 4
gpt4 key购买 nike

我有一个 listView 和一个计时器,它循环访问每个列表项。理想情况下,我希望当前选定的项目自动在 ListView 中居中。我尝试过 smoothScrollToPosition(),但不知道如何使当前项目居中。

我更正的代码(感谢 Matej Spili):

// Smooth scroll the list item 
try {
scrollView.smoothScrollBy(scrollView.getChildAt().getTop(‌​) - (scrollView.getHeight() / 2) + (scrollView.getChildAt().getHeight() / 2), 1500);
}
catch (NullPointerException e)
{
System.out.println("NULL POINTER DEALT WITH");
}

最佳答案

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

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

然后,使用 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);

关于java - 在 Android 中选择列表项时使列表项在屏幕上居中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22882703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com