0

更改方向时,我需要更改我的 Android (4.1 API 16) 应用程序的布局。

 @Override
    public void onConfigurationChanged(Configuration newConfig) {
      super.onConfigurationChanged(newConfig);
      setContentView(R.layout.main_2);
      System.out.println("Orientation changed!");
    }

我还在清单文件中添加了下一行

android:configChanges="orientation"

我使用 Ctrl+F11 来改变方向。我的屏幕旋转但布局保持不变,LogCat 中没有打印任何内容。感觉像 onConfigChanged 事件没有发生。

我的错误在哪里?

谢谢你。

4

3 回答 3

4

尝试使用android:configChanges="orientation|keyboardHidden|screenSize"

注意:从 Android 3.2(API 级别 13)开始,当设备在纵向和横向之间切换时,“屏幕尺寸”也会发生变化。因此,如果您想在为 API 级别 13 或更高级别(由 minSdkVersion 和 targetSdkVersion 属性声明)进行开发时防止由于方向更改而导致运行时重新启动,则除了“orientation”值之外,还必须包含“screenSize”值。也就是说,您必须声明 android:configChanges="orientation|screenSize"。但是,如果您的应用程序以 API 级别 12 或更低级别为目标,那么您的 Activity 始终会自行处理此配置更改(此配置更改不会重新启动您的 Activity,即使在 Android 3.2 或更高版本的设备上运行时也是如此)。

来源:文档

因此,"|screenSize" to configChanges如果您的应用程序针对API 13 及更高版本,也请添加。

于 2012-09-01T09:42:34.137 回答
1

假设您的纵向布局文件位于 layout/my_layout.xml

将要在横向模式下使用的布局放置在具有相同布局文件名的 layout-land 文件夹中。即布局土地/my_layout.xml

不要将android:configChanges="orientation" 添加到该活动的清单中。

您不需要显式更改布局。您不需要覆盖 onConfigurationChanged(Configuration newConfig) 函数

于 2012-09-01T09:48:47.180 回答
0

试试这个....

android:configChanges="orientation|keyboardHidden|screenSize"
于 2013-01-17T07:10:56.147 回答