java - 保存ScrollView位置

标签 java android

我已经找到了这个问题的解决方案,但效果不太好。它将恢复某些位置,但不完全恢复。如果在顶部放置一些标题,则在轮换时,顶部不会是相同的标题,但也不会将其放回顶部。我有不同的纵向和横向用户界面,所以我使用了这段代码

@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

最佳答案

不是源代码的解决方案,而是如何实现用户友好的想法:

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

我还没有对 float 文本执行此操作,但对 ListView 和网格成功执行此操作。

关于java - 保存ScrollView位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50366766/

相关文章:

java - RoboGuice:使用全反射。尝试使用 RoboGuice 注释处理器以获得更好的性能

java - mvn clean : PKIX path building failed: sun. security.provider.certpath.SunCertPathBuilderException

android - 单击项目 ListView 中的按钮时如何在android中的 ListView 中添加/删除项目

java - play2.1.0 上有 secuesocial 3.0-M1?

java - OpenJDK 11 无法解析 javax.xml.* 属性

java - 如何在 JPQL 或 HQL 中进行限制查询?

java - 在自定义适配器中传递 arrayList

android - Firebase Audience 不显示用户

android - 抽屉导航切换填充

返回 LinearLayout 的 Android 适配器