首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >onConfigurationChanged问题

onConfigurationChanged问题
EN

Stack Overflow用户
提问于 2012-09-01 17:40:21
回答 3查看 2.2K关注 0票数 0

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

代码语言:javascript
复制
 @Override
    public void onConfigurationChanged(Configuration newConfig) {
      super.onConfigurationChanged(newConfig);
      setContentView(R.layout.main_2);
      System.out.println("Orientation changed!");
    }

另外,我在清单文件中添加了下一行代码

代码语言:javascript
复制
android:configChanges="orientation"

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

我的错误在哪里?

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-01 17:42:34

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

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

来源:Documentation

因此,如果您的应用程序以API13或更高版本为目标,也要添加"|screenSize" to configChanges

票数 4
EN

Stack Overflow用户

发布于 2012-09-01 17:48:47

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

将您想要在景观模式中使用的布局放置在具有相同布局文件名的layout-land文件夹中。即layout-land/my_layout.xml

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

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

票数 1
EN

Stack Overflow用户

发布于 2013-01-17 15:10:56

试试这个……

代码语言:javascript
复制
android:configChanges="orientation|keyboardHidden|screenSize"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12226652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档