安卓:活动内的屏幕旋转不能切换纵向/横向布局

5
我已经构建了我的Android应用程序,现在想为不同的方向添加布局。我创建了一个layout-land文件夹,并在里面放置了一个与我之前在两个方向上使用的相同名称的布局不同的启动活动“myStartActivity”的布局。
根据我在启动应用程序之前的屏幕方向,选择正确的布局:“myLayout.xml”从“layout”文件夹中选择横向布局,从“layout-land”文件夹中选择纵向布局。
问题是,当我在活动中旋转设备时,旋转后没有得到新的布局。例如:从纵向旋转到横向,它仍然显示来自“layout”文件夹中的“myLayout.xml”,而不是应该显示来自“layout-land”文件夹的布局。
我没有覆盖任何OnConfigurationChange方法或其他内容。在“myStartActivity”中,我只是实例化了一些按钮并给它们一些监听器。我想在横向模式下使用不同的布局以更改按钮的排序。
3个回答

3
在我的情况下,只有在我在清单中的活动中有android:configChanges="orientation"时才会发生所描述的问题。否则,在旋转时将自动使用正确的布局。

如果您从清单中删除android:configChanges =“orientation”,则在旋转屏幕时会重新创建整个活动/片段,这可能不是您想要的。 - Javier Mendonça

0
你可以使用Activity.getResources().getConfiguration().orientation,然后根据方向结果,在旋转时调用的oncreate()方法中设置内容视图。
protected void onCreate(Bundle savedInstanceState) {
int result = this.getResources().getConfiguration().orientation;
if (result == 1){
//set content view to portrait
setContentView(R.layout.portrait);
}
else{
//set content view to landscape} 
setContentView(R.layout.landscape);
}

或者放在一个case语句中 :)


0

如果你只在模拟器上进行测试,可能会出现无法检测到方向更改的问题。我至少经历过这种情况。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接