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

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

谢谢。

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

 <activity android:name=".Activity" android:label="Activity" android:screenOrientation="portrait" android:configChanges="keyboardHidden|orientation|screenSize"> </activity> 

android:screenOrientation属性有几个不同的值; 综合列表请看下面的内容: https : //developer.android.com/guide/topics/manifest/activity-element.html

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

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

正如@ 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> 

哈里·莫雷诺的评论是正确的。 将它添加到“activity”部分的android / app / src / main / AndroidManifest.xml中。 也改变

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

android:configChanges="keyboard|keyboardHidden|screenSize"

删除方向,使其不与新行添加冲突, android:screenOrientation="portrait"

您可以通过在ReactApplication类中添加生命周期callback来简化逻辑:

 public class MyApplication extends Application{ @Override public void onCreate() { super.onCreate(); registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() { @Override public void onActivityCreated(Activity activity, Bundle bundle) { // Here we specify to force portrait at each start of any Activity activity.setRequestedOrientation( ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } @Override public void onActivityStarted(Activity activity) { } @Override public void onActivityResumed(Activity activity) { } @Override public void onActivityPaused(Activity activity) { } @Override public void onActivityStopped(Activity activity) { } @Override public void onActivitySaveInstanceState(Activity activity, Bundle bundle) { } @Override public void onActivityDestroyed(Activity activity) { } }); } 

所以你不需要configurationAndroidManifest

2017更新

除了上面提到的解决scheme,如果你使用世博会来build立你的应用程序(就像目前在React本地博客的官方指南中推荐的那样),那么你只需要在app.json设置orientation为“纵向”或“横向”并使其在iOS和Android上同时工作,而无需编辑iOS / Android特定的XMLconfiguration文件:

"orientation": "portrait"

例:

 { "expo": { "name": "My app", "slug": "my-app", "sdkVersion": "21.0.0", "privacy": "public", "orientation": "portrait" } } 

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

ScreenOrientation.allow()

例:

 ScreenOrientation.allow(ScreenOrientation.Orientation.PORTRAIT); 

更多细节:

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