Android 如何随方向改变而改变布局?
我正在根据手机的方向改变布局,如下所示: 一旦创建…->Android 如何随方向改变而改变布局?,android,orientation,Android,Orientation,我正在根据手机的方向改变布局,如下所示: 一旦创建…-> if (config.orientation == Configuration.ORIENTATION_LANDSCAPE) { setContentView(R.layout.layout1); }else{ setContentView(R.layout.layout2); } 这很好用——因为每次我改变手机的方向时,onCreate都会被调用
if (config.orientation == Configuration.ORIENTATION_LANDSCAPE) {
setContentView(R.layout.layout1);
}else{
setContentView(R.layout.layout2);
}
这很好用——因为每次我改变手机的方向时,onCreate都会被调用——但我想改变布局,即使不记得onCreate——我该如何解决这个问题
我试过android:configChanges=“orientation | screenSize”-然后一旦创建,它不会在每次手机方向改变时重新加载,但在这里我无法控制布局。。。我的问题的最佳解决方案是什么
编辑:
我还尝试了添加
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
setContentView(R.layout.layout1);
}else{
setContentView(R.layout.layout2);
}
}
但在这里我得到了一个错误,当更改方向时,从清单中删除
android:configChanges=“orientation | screenSize”
。在res/
中添加一个名为layout land
的文件夹,并将要在横向视图中显示的布局放在那里。Android会选择正确的一个你不需要这样做,
只需在res文件夹中创建一个名为“layoutland”的新文件夹,并将XML放在那里。
当设备屏幕旋转时,它将自动从此文件夹中获取横向布局并进行渲染。您是否尝试过
此方法。setRequestedOrientation(ActivityInfo.screen\u ORIENTATION\u横向)
?我做到了,但在更改方向时重新加载onCreate也有问题,我不想重新加载onCreate。布局应在创建时更改,而不重新加载。我这样做了,但在更改方向时重新加载onCreate也有问题,我不想在创建时重新加载在清单中添加android:configChanges=“orientation”。我的配置是android:configChanges=“orientation | keyboardHidden | screenLayout”当轮换电话或其他问题时,仍然重新加载oncreate,当我这样做时,你说了什么,我必须在我的活动中写入什么?我是否只设置ContentView肖像?它是否对我的main.xml的命名起作用?我必须在setContentView中声明哪一个?或者你能像上面我的代码一样解释一下,我必须更改或删除哪一部分?