改变方向而不再加载

时间:2011-09-18 18:04:02

标签: java android xml

我想改变方向,但我有两个不同的xml,一个用于肖像,另一个用于横向。屏幕上会显示相同的信息,但会移动使用一些空格。如果我这样做:

android:configChanges="keyboardHidden|orientation"

它只会在同一个xml中从纵向更改为横向。

我该如何改变?

5 个答案:

答案 0 :(得分:1)

将您的视图设置为类变量:

private TextView yourView;

将以下内容添加到onCreate()方法:

if (savedInstanceState != null) {
    ((TextView)findViewById(R.id.yourview)).restoreState(savedInstanceState);
}

并在保存实例状态时添加覆盖以保存状态

@Override
protected void onSaveInstanceState(Bundle outState) {
    yourView.saveState(outState);
}

最后:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
}

您应该可以使用此管理配置更改...

答案 1 :(得分:0)

在您的活动中,覆盖此方法:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

}

更改方向时会触发此操作。您可以找到使用参数的方向。

答案 2 :(得分:0)

这不是android的工作方式。如果您想要一个不同的纵向/横向布局,您必须让系统为您处理配置更改并加载相应的布局xml。

答案 3 :(得分:0)

覆盖活动中的onConfigurationChanged()方法。检查当前方向并使用setContentView()设置适当的内容视图。

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    if (newConfig.getConfiguration() == Configuration.ORIENTATION_LANDSCAPE) {
        setContentView(landscape_layout);
    } else {
        setContentView(portrait_layout);
    }
    initViews();
}

答案 4 :(得分:0)

把它放在你的清单

android:configChanges="orientation|keyboardHidden|screenSize|uiMode"

它解决了我和你的问题:)