gpt4 book ai didi

android - 跨调用保留 PreferenceActivity 的滚动位置

转载 作者:行者123 更新时间:2023-11-29 21:54:22 25 4
gpt4 key购买 nike

假设我有一个 PreferenceActivity(出于兼容性原因,我无法将其转换为使用 fragment )。 PreferenceActivity 中的一个设置是针对当前应用程序主题的,我想在通过调用 PreferenceActivity#recreate() 强制重新创建 Activity (使用新主题)。

不幸的是,该 Activity 包含太多设置,可能需要滚动。重新创建 Activity 后,我想恢复之前的滚动位置,以便从一个主题无缝过渡到另一个主题。

尝试在 onSaveInstanceState 中使用 getListView().getScrollY() 来保留嵌入的 ListView 的滚动位置,但是,总是返回零.

有什么方法可以获取 PreferenceActivity 的列表滚动位置并在以后恢复它?

最佳答案

首先,您需要获取 2 个值:

final int firstVisibleItem = getListView().getFirstVisiblePosition();
final int firstVisibleItemTop = getListView().getChildAt(0).getTop();

然后将它们保存到一些存储中(首选项或 Intent 的 budle 或其他地方)。从这些值恢复滚动位置:

final ListView listView = getListView();
listView.setSelection(firstVisibleItem);
listView.smoothScrollBy(-firstVisibleItemTop, 0);

关于android - 跨调用保留 PreferenceActivity 的滚动位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13636284/

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