首页 文章

锁定屏幕方向(Android)[重复]

提问于
浏览
134

可能重复:如何在Android中禁用方向更改?

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

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

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

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

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);

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

3 回答

  • 231

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

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

    MyActivity 是你想留在景观中的那个 .

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

    注意:<Android 3.2(API级别13)需要 keyboardHiddenorientation ,并且所有三个选项都需要3.2或更高版本,而不仅仅是 orientation .

  • 27

    我有类似的问题 .

    当我进入

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

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

    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    

    在目标活动的OnCreate部分解决问题后立即执行 . 所以我现在使用这两种方法 .

  • 56

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

    android:screenOrientation="landscape"
    

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

    android:screenOrientation="portrait"
    

相关问题