回到之前的片段(如 ListView)后,我可以保持 ScrollView 的位置吗?

Posted

技术标签:

【中文标题】回到之前的片段(如 ListView)后,我可以保持 ScrollView 的位置吗?【英文标题】:Could I keep position of ScrollView after back to prev Fragment like ListView? 【发布时间】:2014-11-22 02:47:22 【问题描述】:

我尝试过同时使用 ScrollView 和 ListView。

我发现如果我使用 ListView 并单击其中一个项目,则让当前片段被下一个片段替换,然后按返回按钮到上一个片段。 ListView 的滚动位置将保持不变。但是如果我使用 ScrollView,就不会了。

我不明白为什么它们不同?以及如何让 ScrollView 在按下返回按钮后保持其位置?

实际上,我已经在 *** 上搜索了一些答案。但我想知道原因并找到一种更简单的方法使 ScrollView 和 ListView 具有相同的行为。

请帮帮我!谢谢!

【问题讨论】:

【参考方案1】:

片段自动保存和恢复其视图的状态,只要它们分配了 ID。

所以如果你给你的ScrollView分配一个ID,它的滚动状态就可以恢复:

<ScrollView android:id="@+id/scrollview"
    ...>

【讨论】:

没想到会这么简单:P 太棒了!官方文件是这么说的吗? 那里有很多错误信息,这可以清除它。例如,“你需要处理 onSaveInstanceState/onRestoreInstanceState”,这实际上并没有解决它,但事实上你在这样做时向视图添加了一个 ID,这解决了它。 你可以在这里阅读更多:inthecheesefactory.com/blog/… 太棒了,你救了我

以上是关于回到之前的片段(如 ListView)后,我可以保持 ScrollView 的位置吗?的主要内容,如果未能解决你的问题,请参考以下文章

返回片段后ListView为空

方向/配置更改后如何维护 ListView 片段状态?

片段事务分离和附加后ListView不工作?

片段中的Android ListView - 获取新数据后刷新表的问题

按下后退按钮时正在重新创建 Listview 片段

带有 ListView 的片段:setAdapter 上的 NullPointerException