5

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

根据我在启动应用程序之前的屏幕方向,选择正确的布局:当我以纵向开始时,从“布局”文件夹中选择“myLayout.xml”,从“布局土地”中选择“myLayout.xml” -当我在横向开始时的文件夹。

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

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

4

3 回答 3

3

在我的情况下,仅当清单中的活动中有 android:configChanges="orientation" 时才会发生所描述的问题。

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

于 2011-09-12T10:47:56.897 回答
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);
}

或者坚持一个案例陈述:)

于 2011-03-17T14:18:21.623 回答
0

如果您仅在模拟器上进行测试,则检测方向变化可能会出现问题。至少我经历过。

于 2011-10-26T12:07:05.770 回答