我需要在更改方向时更改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事件不会发生。
我的错误在哪里?
谢谢。
答案 0 :(得分:4)
尝试使用 android:configChanges="orientation|keyboardHidden|screenSize"
警告:从Android 3.2(API级别13)开始,“屏幕大小” 当设备在纵向和横向之间切换时也会发生变化 取向。因此,如果您希望阻止运行时重新启动 开发API级别13或更高级别时的方向更改(如 由minSdkVersion和targetSdkVersion属性声明),你 除“方向”外,还必须包含“screenSize”值 值。也就是说,你必须decalare 的机器人:configChanges = “取向|屏幕尺寸”即可。但是,如果你的 应用程序目标API级别12或更低,然后您的活动始终 处理此配置更改本身(此配置更改 即使在Android 3.2或Android上运行,也不会重新启动您的活动 更高的设备)。
因此,如果您的应用程序定位 API 13及更高版本,也请添加 "|screenSize" to configChanges
。
答案 1 :(得分:1)
假设您的纵向布局文件位于layout / my_layout.xml
中将要在横向模式下使用的布局放置在layout-land文件夹中,并使用相同的布局文件名。即 layout-land / my_layout.xml
不要将 android:configChanges =“orientation”添加到该活动的清单中。
您无需显式更改布局。你不需要覆盖onConfigurationChanged(配置newConfig)函数
答案 2 :(得分:0)
尝试这个......
android:configChanges="orientation|keyboardHidden|screenSize"