能否像ListView一样,在返回到上一个Fragment后保持ScrollView的位置?

32

我尝试过使用ScrollView和ListView。

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

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

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

请帮助我!谢谢!

1个回答

127

只要Fragment所包含的View被分配了ID,它们的状态就会被自动保存和恢复。

因此,如果您为ScrollView分配了一个ID,它的滚动状态就可以被恢复:

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

9
没想到这件事情会这么容易 :P - Alex
10
太棒了!官方文件中是否提及这一点? - wangqi060934
1
有很多错误信息在那里,这篇文章澄清了它。例如,“你需要处理onSaveInstanceState/onRestoreInstanceState”,但实际上这并不能解决问题,而是当你在这样做时给视图添加了一个ID,这才解决了问题。 - Greg Ennis
2
太棒了,你救了我。 - Hamdy Abd El Fattah
1
哇,但是你怎么知道的? - lazy
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接