我有一个主要的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就会向上滚动。 有什么办法可以防止这种情况发生吗?
答案 0 :(得分:1)
我遇到了同样的问题。
发生的事情是ScrollView顶部的EditText具有焦点。当新活动开始时,ScrollView向上滚动以使其可见。
我找到的解决方案是在使用requestFocus()调用startActivityForResult()之前将焦点放在Button的容器上(它必须是可聚焦的)。
这样,具有焦点的视图可见,ScrollView不会向上滚动。
答案 1 :(得分:0)
您应该记录onResume中活动的ScrollView(getScrollY)和restore的当前位置。