保存ScrollView位置

时间:2018-05-16 09:12:20

标签: java android

我已经找到了解决这个问题的方法,但它并没有很好地发挥作用。它会恢复某些位置但不完全正确。如果在顶部加上一些标题,那么在轮换时它不会成​​为同一个标题,但它也不会把它放回到顶部。我有不同的纵向和横向UI,所以我使用了这段代码

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putIntArray(SCROLL_STATE_KEY, new int[]{mScrollView.getScrollX(),
            mScrollView.getScrollY()});
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    final int[] scrollPosition = savedInstanceState.getIntArray(SCROLL_STATE_KEY);
    if(scrollPosition != null) {
        mScrollView.post(new Runnable() {
            @Override
            public void run() {
                mScrollView.scrollTo(scrollPosition[0], scrollPosition[1]);
            }
        });
    }
}

这是gif。这太快了,但我不能在这里放超过2MB,所以,希望你能看到什么不能正常工作

scrollGif

1 个答案:

答案 0 :(得分:0)

不是解决方案作为源代码,而是一个想法如何做到这一用户友好:

在旋转之前,我会得到滚动视图的第一个可见的几个单词/图像的(文本)内容,并尝试滚动滚动视图,以便旋转后这些单词/图像再次位于滚动视图的顶部。

我已经为浮动文本做了这个,但是成功地用于列表视图和网格。