gpt4 book ai didi

android - 将 ListView 项目放在可见区域的中心

转载 作者:太空狗 更新时间:2023-10-29 14:17:52 27 4
gpt4 key购买 nike

我有一个 ListView,其中包含一个 ArrayAdapter,其中包含一天中每个小时的项目,我需要它将包含当前小时的项目放置在ListView 可见区域的中心。

我试过 setSelection,但它会将项目放在顶部而不是中心。

有什么方法可以不用计算布局高度之类的吗?

现在我正在使用这种方法,因为我知道这些元素有 40dip 高,但它们不会总是 40dip 高。

private void centerListView() {
final Calendar c = Calendar.getInstance();
final int hour = c.get(Calendar.HOUR_OF_DAY);
final int listViewProgrammerPixels = listViewProgrammer.getHeight();
final int itemPixels = (int) (40 * getResources().getDisplayMetrics().density + 0.5f);
final int pixelsFromTop = (listViewProgrammerPixels - itemPixels) / 2;
listViewProgrammer.setSelectionFromTop(hour, pixelsFromTop);
}

最佳答案

我已经使用此逻辑完成此操作,首先您必须在适配器 getView 方法中获取 ListView 的高度和 View 的高度,然后在您的点击事件中编写此代码。

int offset = ((listViewheight/2) - (viewHeight/2));

mListView.smoothScrollToPositionFromTop(位置,Math.abs(偏移量));

希望这对你有用。

关于android - 将 ListView 项目放在可见区域的中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19972509/

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