我有一个xml
在layout-normal
,layout-large
和layout-land
。我想要做的是在特定的orientation
中使用提供的xml
。如何在旋转时更改布局?
我已经在这里搜索它,这是我已经尝试过。
1)我在里面用不同的layout
名称,但同样ids
并覆盖onConfigurationChanged
并设置layout
那里。这里是我的代码
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT)
{
setContentView(R.layout.activity_login2);
}
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE)
{
setContentView(R.layout.activity_login);
}
}
它不会改变,但是当屏幕旋转的EditText
在输入的数据已经一去不复返了。我试图用onSaveInstanceState
来保存instance
,但仍然是一样的。它看起来像破坏了活动并创建一个新的,在onCreate
中初始化的所有小部件都消失了。
2)然后我发现layout-land
,只是把景观布局也有相同的布局名称,比如在layout-normal
和layout-large
例子是
res/layout-land -> activity_login.xml
res/layout-normal-> activity_login.xml
res/layout-large-> activity_login.xml
,并删除代码上的onConfigurationChanged
但仍不起作用。
在我AndroidManifest
在LoginActivity
我把
<activity
android:name=".LoginActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@style/DefaultTheme"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
反正是有改变布局时屏幕旋转?先谢谢你。
我试过这个,但它仍然使用肖像布局 – natsumiyu
我认为即使Android文档也没有使这些细节如此明显。就我个人而言,我从来没有面对OP的问题,因为我的景观文件被放置在默认位置+1。 –
当我尝试它时,它只使用正确的布局,当我旋转应用程序刚刚开始时,应用程序首次开始使用将被使用,直到我关闭该应用程序。当我关闭应用程序并以横向位置再次打开时,它会发生变化。 – natsumiyu