Зафиксируйте ориентацию устройства - React Native (Android)

Я использую React Native 0.29 и разрабатываю для Android. Я пытаюсь заблокировать ориентацию устройства. Мне нужно заблокировать экран в портретном режиме. Я попытался использовать этот репозиторий https://github.com/yamill/react-native-orientation, но он еще не поддерживает RN 0.29.

Есть ли способ заблокировать ориентацию устройства? Может быть, любой родной Android взломает студию Android?

Ответ 1

Просто добавьте android: screenOrientation = "портрет" в действие в AndroidManifest.xml.

Ответ 2

Существует запрос на растяжение для работы над 0.29.2 и выше: https://github.com/yamill/react-native-orientation/pull/85

Если вы используете его версию, она должна работать на 0.29.2 и выше: https://github.com/youennPennarun/react-native-orientation

Шаги:

  • Отключить предыдущую установку с помощью rnpm unlink react-native-orientation
  • rm -rf node_modules/react-native-orientation
  • в вашем пакете. json отредактируйте запись react-native-orientation как:

    "react-native-orientation": "youennPennarun/react-native-orientation"

  • npm install

  • react-native link react-native-orientation

После этого нужно работать. Вы можете отслеживать ход PR и переключиться на основное репо, когда оно было объединено.

Ответ 3

response-native-orientation - больше не совместим с новой версией (я пробовал 0.39.2). После связывания этого модуля у меня возникла ошибка компилятора. Как я понял, теперь мы должны использовать react-native-orientation-listener

npm install --save response-native-orientation-listenener

rnpm link

Ответ 4

Шаг: 1

npm install git+https://github.com/yamill/react-native-orientation.git --save

Шаг 2:  реакция-родная ссылка Шаг 3 Измените файл MainApplication.java с помощью

import com.github.yamill.orientation.OrientationPackage;// import

@Override
protected List getPackages() {
return Arrays.asList(
new MainReactPackage(),
new OrientationPackage() //add this
);
}

Ответ 5

2017 Обновление

В настоящее время существует еще один способ сделать это один раз для Android и iOS, добавив:

"orientation": "portrait"

в app.json, если вы используете Expo:

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

Или во время выполнения:

ScreenOrientation.allow()

Пример:

ScreenOrientation.allow(ScreenOrientation.Orientation.PORTRAIT);

Обратите внимание, что он работает только в том случае, если вы строите с помощью Expo, но так как это в настоящее время (по состоянию на 2017 год) рекомендуется в официальных руководствах по React Native Blog, то, вероятно, многие люди используют его, поэтому он стоит упомянуть как интересное решение в дополнение к взлому файлов конфигурации XML для Android.

Дополнительная информация:

Подробнее см.: как отключить ротацию в React Native?