如何在本机Android开发模式下禁用横向模式?

如何在本机Android开发模式下禁用横向模式?,android,react-native,react-native-android,Android,React Native,React Native Android,我是android环境的新手。我知道iOS可以用Xcode来禁用设备定向。如何在本机Android中禁用横向模式或任何方向模式 谢谢。在android/app/src/main/AndroidManifest.xml文件中的活动部分添加android:screenOrientation=“肖像”,使其看起来像这样: <activity android:name=".Activity" android:label="Activity" android:screenOr

我是android环境的新手。我知道iOS可以用Xcode来禁用设备定向。如何在本机Android中禁用横向模式或任何方向模式


谢谢。

android/app/src/main/AndroidManifest.xml
文件中的
活动部分添加
android:screenOrientation=“肖像”
,使其看起来像这样:

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


android:screenOrientation=“trait”
添加到您的活动xml中

如上文@morenoh149所述,执行此操作的属性名称和值为android:screenOrientation=“trait”。React Native在Android文件夹下的项目目录中生成一个名为AndroidManifest.xml的文件。在标记manifest/application/activity下的xml文件中,您将添加一行

下面是一个例子

<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>



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

android:configChanges=“键盘|键盘隐藏|方向|屏幕大小”

android:configChanges=“键盘|键盘隐藏|屏幕大小”

删除方向,使其与添加的新行不冲突,
android:screenOrientation=“trait”

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

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) {

            }
        });
}
因此,您不需要配置
AndroidManifest

2017更新 除了上面发布的解决方案之外,如果您正在使用Expo构建应用程序(正如官方指南中当前建议的那样),那么您只需将
app.json
中的
方向设置为“纵向”或“横向”并使其同时在iOS和Android上工作,无需编辑iOS/Android特定的XML配置文件:

“方向”:“纵向”
例如:

{
  "expo": {
    "name": "My app",
    "slug": "my-app",
    "sdkVersion": "21.0.0",
    "privacy": "public",
    "orientation": "portrait"
  }
}
ScreenOrientation.allow(ScreenOrientation.Orientation.PORTRAIT);
您还可以在运行时使用此选项:

ScreenOrientation.allow()
例如:

{
  "expo": {
    "name": "My app",
    "slug": "my-app",
    "sdkVersion": "21.0.0",
    "privacy": "public",
    "orientation": "portrait"
  }
}
ScreenOrientation.allow(ScreenOrientation.Orientation.PORTRAIT);
更多详情: 有关更多信息,请参阅:

如果您使用的是
react native navigation
,则接受的答案无效。改用这个:

Navigation.setDefaultOptions({
    layout: {
        orientation: ["portrait"],
    },
});

检查文档

只需打开你的
android/app/src/main/AndroidManifest.xml

并添加这一行
android:screenOrientation=“纵向”
android:configChanges=“键盘|键盘隐藏|方向|屏幕大小
内部活动组

看起来是这样的

 <activity
      android:name=".MainActivity"
      android:label="@string/app_name"
      android:screenOrientation="portrait"
      android:configChanges="keyboard|keyboardHidden|orientation|screenSize">
     .....your other stuff
 </activity>

对于React本机导航,可以通过定义方向来固定,如下所述:


我认为您可以从清单文件中禁用它…1.打开您的项目->android->应用->src->主->AndroidManifest.xml 2.放置android:screenOrientation=“纵向”在中,我最喜欢这个答案,因为它准确地显示了放置更改的位置。不起作用。我从emulator更改方向,并且应用程序视图更改为landscape。如果我希望为移动设备的选项卡和肖像设置景观,我怎么做呢?请帮助。我们必须为每个活动都这样做吗?小心,如果您使用的是ReactNativeNavigation,则此选项无效不适用于您。请在startSingleScreenApp或StartTabbBaseDapp的应用程序样式中设置“方向:纵向”,看看,这可能会有所帮助。您确实希望使用
传感器纵向
而不是
纵向
,以便可以“倒置”使用”“也是。而且,如果您的目标是API 18+,您应该使用
usercrative
,因为这将考虑用户是否锁定了方向。有关更多详细信息,请参阅文档:@Bat ReactNativeNavigation显然在您的评论之后发生了变化,并且在回答中建议的设置
android:screenOrientation
现在可以正常工作。如果我想为移动设备设置标签的横向和纵向,该如何操作。请帮忙@Gem Ubaldoth这符合我只在智能手机设备上锁定方向和在平板电脑上保持自由方向的需要,我只是在活动前做了一次设备检查;这是唯一对我有效的解决办法。更新
AndroidManifest.xml
没有效果;我不确定我是不是发布得不好。我发现我必须在活动中调用
setRequestedOrientation
,在活动开始时调用
?请让我们知道,这些API在不断变化。请确保将其放在活动标签中,而不是应用程序标签中!如果我想要标签的横向和移动设备的纵向,我该怎么做。请帮忙。如果你想做OP想做的事,@mixophrygian说的没有错。这将完全禁用横向视图。但是,如果你想让用户在应用程序中的某个地方查看风景,那么不要删除它。不会有任何冲突(如果您将此项保留,也不会有冲突)。