Android:旋转到横向

时间:2011-07-26 15:12:38

标签: android landscape screen-orientation

我有一个Android应用程序,其活动可以处理方向更改(清单中的android:configChanges="keyboardHidden|orientation")。它还有一个调用超类的onConfigurationChanged处理程序。

旋转设备后,活动将保持纵向模式。并且整个屏幕处于奇怪的状态,其中X轴从底部到顶部,Y轴从左到右,状态栏沿着左侧屏幕边缘运行,并且所有文本在物理上向上。就好像系统被迫不承认方向改变一样。

我真的想做什么,我想避免活动重启,但是处理方向更改时几乎没有仔细放置布局属性翻转。但是,在GUI的上述状态中我不能这样做。重新加载主布局文件不会发生任何变化。

问题 - 如何告诉系统切换物理方向,以便XY轴按照应有的方式运行?

编辑:这是一个奇怪的数据点:在所有onConfigChanged调用中,newConfig.orientation为1。

2 个答案:

答案 0 :(得分:0)

你真的不应该使用android:configChanges。这种技术被认为是最后的手段。有关详细信息,请阅读Handling Runtime Changes

简要说明:如果您使用android:configChanges,则您有责任处理配置更改事件并为新配置重新加载UI资源。调用onConfigurationChanged()时,getResources()已指向新配置中的正确资源。您只需要使用新的(可能更改的)值手动重新设置所有布局,字符串,尺寸,绘图等。


您也没有提到为什么决定使用configChanges,而不是正常的Activity工作流程。这可能对你有所帮助。

答案 1 :(得分:0)

清单中的属性android:screenOrientation="portrait"应该受到指责。如果存在此属性,即使让系统重新启动活动也不会将屏幕切换到真横向模式。