如何在React Native Android开发模式下禁用横向模式?

sun*_*ngl 64 android react-native react-native-android

我是android环境的新手.我知道可以在Xcode中完成iOS以禁用设备方向.如何在React Native Android中禁用横向模式或任何方向模式?

谢谢.

小智 116

添加android:screenOrientation="portrait"到文件中的activity部分android/app/src/main/AndroidManifest.xml,以便最终看起来像这样:

<activity
    android:name=".Activity"
    android:label="Activity"
    android:screenOrientation="portrait"
    android:configChanges="keyboardHidden|orientation|screenSize">
</activity>
Run Code Online (Sandbox Code Playgroud)

android:screenOrientation物业有几个不同的价值; 如需全面的列表,请查看以下内容:https://developer.android.com/guide/topics/manifest/activity-element.html

  • 小心,如果你正在使用ReactNativeNavigation,那么这对你不起作用.在startSingleScreenApp或startTabBasedApp中的appStyle中设置"orientation:'portrait',".看看[这个主题](https://github.com/wix/react-native-navigation/issues/349),它可能会有所帮助. (25认同)
  • 你真的想用`sensorPortrait`代替`portrait`,这样它也可以"颠倒"使用.而且,如果你的目标是API 18+,你应该使用`userPortrait`,因为如果用户有锁定方向,它会尊重.有关详细信息,请参阅文档:https://developer.android.com/guide/topics/manifest/activity-element.html#screen (4认同)
  • @Bat ReactNativeNavigation 显然自您的评论以来已经发生了变化,并且按照答案中的建议设置“android:screenOrientation”现在工作正常。 (4认同)

Har*_*eno 46

http://developer.android.com/guide/topics/manifest/activity-element.html

添加android:screenOrientation="portrait"到您的活动xml


bre*_*ret 27

正如@ morenoh149所述,属性名称和值是android:screenOrientation ="portrait".React Native在Android文件夹下的项目目录中生成一个名为AndroidManifest.xml的文件.在标签清单/应用程序/活动下的那个xml文件中,你要添加一行android:screenOrientation ="portrait"

一个例子如下所示

<uses-permission android:name="android.permission.INTERNET" />

<application
  android:allowBackup="true"
  android:label="@string/app_name"
  android:icon="@mipmap/ic_launcher"
  android:theme="@style/AppTheme">
  <activity
    android:name=".MainActivity"
    android:label="@string/app_name"
    android:screenOrientation="portrait" 
    android:configChanges="keyboard|keyboardHidden|orientation|screenSize">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
  </activity>
  <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
</application>
Run Code Online (Sandbox Code Playgroud)

  • 不起作用。我从模拟器更改方向,应用程序视图更改为横向 (2认同)

mix*_*ian 14

哈里莫雷诺的评论是正确的.将其添加到"活动"部分的android/app/src/main/AndroidManifest.xml中.也改变

android:configChanges="keyboard|keyboardHidden|orientation|screenSize"

android:configChanges="keyboard|keyboardHidden|screenSize"

删除方向,以便它与添加的新行不冲突, android:screenOrientation="portrait"


rsp*_*rsp 10

2017年更新

除了上面贴如果你使用世博会建立自己的应用程序(如官方指南目前推荐的解决方案做出反应母语博客),那么你需要的是设置orientationapp.json以"人像"或"风景",并使其发挥作用在iOS和Android上同时无需编辑iOS/Android特定的XML配置文件:

"orientation": "portrait"

例:

{
  "expo": {
    "name": "My app",
    "slug": "my-app",
    "sdkVersion": "21.0.0",
    "privacy": "public",
    "orientation": "portrait"
  }
}
Run Code Online (Sandbox Code Playgroud)

您也可以在运行时使用它:

ScreenOrientation.allow()

例:

ScreenOrientation.allow(ScreenOrientation.Orientation.PORTRAIT);
Run Code Online (Sandbox Code Playgroud)

更多细节:

有关详细信息,请参阅: 如何在React Native中禁用旋转?


rom*_*n21 6

如果您使用,则可接受的答案不起作用react-native-navigation。使用此代替:

Navigation.setDefaultOptions({
    layout: {
        orientation: ["portrait"],
    },
});
Run Code Online (Sandbox Code Playgroud)

此处检查文档。