如何在调用另一个活动后保持活动不再向上滚动?

时间:2012-01-06 01:32:40

标签: android

我有一个主要的Activity,其布局包含在ScrollView中,如下所示:

<ScrollView android:layout_height="wrap_content" android:layout_width="fill_parent" android:layout_weight="1">

用户可以向上和向下滚动,当用户向下滚动时会有一些按钮。

当用户按下按钮时 - 我运行如下代码:

public void onClick(View view)
        {
            Log.d(LOG_TAG, "onClick");

            TireView tiat = (TireView)view;

            Intent i = new Intent(TrailerInspectionActivity.this, TireInspectionActivity.class);
            i.putExtra(TireInspectionActivity.INTENT_TIRE_NUMBER, tiat.getNumber());
            if (tiat.getDepth() != -1)
            {
                i.putExtra(TireInspectionActivity.INTENT_DEPTH, tiat.getDepth());
                i.putExtra(TireInspectionActivity.INTENT_PRESSURE, tiat.getPressure());
            }

            TrailerInspectionActivity.this.startActivityForResult(i, REQUEST_CODE_TIRE_INSPECTION_ACTIVITY);
        }

TireInspectinActivity启动并显示为popup - 我使用theme.Dialog

只要用户点击和弹出窗口显示 - 主要活动ScrollView就会向上滚动。 有什么办法可以防止这种情况发生吗?

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。

发生的事情是ScrollView顶部的EditText具有焦点。当新活动开始时,ScrollView向上滚动以使其可见。

我找到的解决方案是在使用requestFocus()调用startActivityForResult()之前将焦点放在Button的容器上(它必须是可聚焦的)。

这样,具有焦点的视图可见,ScrollView不会向上滚动。

答案 1 :(得分:0)

您应该记录onResume中活动的ScrollView(getScrollY)和restore的当前位置。