Подтвердить что ты не робот

Как отключить ландшафтный режим в режиме React Native Android dev?

Я новичок в среде Android. Я знаю, что iOS можно сделать в Xcode, чтобы отключить ориентацию устройства. Как отключить ландшафтный режим или любой режим ориентации в React Native Android?

Спасибо.

4b9b3361

Ответ 1

Добавьте 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>

Существует несколько разных значений для свойства android:screenOrientation; для всеобъемлющего списка рассмотрим следующее: https://developer.android.com/guide/topics/manifest/activity-element.html

Ответ 3

Как указано выше, имя свойства и значение для него указано как андроид: screenOrientation = "портрет". React Native создает файл под названием AndroidManifest.xml в каталоге проекта в папке Android. Внутри этого XML файла под тегом manifest/application/activity вы добавили строку 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>

Ответ 4

Комментарий Гарри Морено правильный. Добавьте его в android/app/src/main/AndroidManifest.xml в разделе "Активность". Также измените

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

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

удаление ориентации, чтобы она не противоречила новой добавленной строке, android:screenOrientation="portrait"

Ответ 5

Вы можете просто логику, добавив обратный вызов жизненного цикла в класс 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

Ответ 6

2017 Обновление

В дополнение к решениям, опубликованным выше, если вы используете Expo для создания своего приложения (как это в настоящее время рекомендуется в официальных руководствах по React Native Blog), тогда вам нужно всего лишь установить orientation в app.json на "портрет" или "пейзаж" и заставить работать как на iOS, так и на Android одновременно, без необходимости редактировать конфигурацию XML для iOS/Android файлы:

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