Android:活动中的屏幕旋转不会切换纵向/横向布局

时间:2010-07-23 10:51:33

标签: android landscape screen-orientation portrait device-orientation

我构建了我的Android应用程序,并希望现在为不同的方向添加布局。我创建了一个layout-land文件夹,并为我的第一个Starter Activity“myStartActivity”(与之前用于两个方向的布局同名)放置了不同的布局。

取决于我的屏幕方向在我启动应用程序之前,选择正确的布局:“myLayout.xml”来自“layout”文件夹,当我以纵向开始时,“myLayout.xml”来自“layout-”当我从风景开始的时候“登陆”。

问题是,当我在活动中旋转设备时,旋转后我没有得到新的布局。例如:从纵向旋转到横向,它仍然在“布局”文件夹中显示“myLayout.xml”,而不是“layout-land”文件夹。“/ p>

我没有覆盖任何OnConfigurationChange方法或任何东西。我在“myStartActivity”中所做的只是实例化一些按钮并给它们一些听众。我想在横向上使用不同的布局来改变按钮的顺序。

3 个答案:

答案 0 :(得分:3)

在我的情况下,只有当我有android:configChanges =“orientation”时才会出现所描述的问题 在清单中的活动中。

否则旋转时会自动使用正确的布局。

答案 1 :(得分: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);
}

或坚持案例陈述:)

答案 2 :(得分:0)

如果您仅在模拟器上进行测试,则可能存在检测方向更改的问题。我至少经历过这一点。