锁定屏幕方向(Android)

时间:2011-01-13 00:54:37

标签: android layout orientation

  

可能重复:
  How to disable orientation change in Android?

我正在编写一个使用不同内容(活动)标签的Android应用程序。 在其中一项活动中,我想将屏幕方向锁定为“Landscape” - 模式, 但在其他活动中,我想要正常的方向(根据传感器)。

我现在正在做的是我正在打电话

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

当我切换到横向模式活动时,

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);

当我切换回其他活动时。但是,这似乎不起作用, 整个应用程序锁定。这个问题的正常方法是什么?

3 个答案:

答案 0 :(得分:236)

在Manifest中,您可以将screenOrientation设置为横向。它在XML中看起来像这样:

<activity android:name="MyActivity"
android:screenOrientation="landscape"
android:configChanges="keyboardHidden|orientation|screenSize">
...
</activity>

MyActivity是您想要留在景观中的那个。

android:configChanges=...行可防止在屏幕旋转时调用onResume()onPause()。如果没有这一行,轮换将按照您的要求保留,但仍会进行调用。

注意:&lt; keyboardHiddenorientation是必需的。 Android 3.2(API级别13),所有三个选项都需要3.2或更高版本,而不仅仅是orientation

答案 1 :(得分:57)

我有类似的问题。

当我进入

<activity android:name="MyActivity" android:screenOrientation="landscape"></activity>

在清单文件中,这导致该活动以横向显示。然而,当我回到以前的活动时,即使他们被设置为肖像,他们也会在lanscape中显示。但是添加

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
在目标活动的OnCreate部分解决问题后立即

。所以我现在使用这两种方法。

答案 2 :(得分:29)

在项目的Android清单文件中,找到要修复其方向的活动声明,并添加以下代码,

android:screenOrientation="landscape"

横向和纵向添加以下代码,

android:screenOrientation="portrait"