Comment désactiver le mode paysage en mode dev natif Android?

je suis nouveau à android environment. Je sais que iOS peut être fait en Xcode pour désactiver l'orientation du périphérique. Comment puis-je désactiver le mode paysage ou tout mode d'orientation dans React Native Android?

Merci.

50
demandé sur Cherniv 2015-12-04 02:37:41

6 réponses

ajouter android:screenOrientation="portrait" à la section activity dans le fichier android/app/src/main/AndroidManifest.xml , de sorte qu'il finisse par ressembler à ceci:

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

il y a plusieurs valeurs différentes pour la propriété android:screenOrientation ; pour une liste complète, jetez un oeil à ce qui suit: https://developer.android.com/guide/topics/manifest/activity-element.html

91
répondu Gem Ubaldo 2016-09-29 20:56:42

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

ajouter android:screenOrientation="portrait" à votre activité xml

42
répondu Harry Moreno 2015-12-31 16:36:43

comme @morenoh149 indiqué ci-dessus le nom de la propriété et la valeur pour faire ceci est android:screenOrientation="portrait". React Native génère un fichier appelé AndroidManifest.xml dans votre répertoire de projet sous le dossier Android. Dans ce fichier xml sous la balise manifest / application/activity vous ajouteriez la ligne android:screenOrientation= "portrait"

un exemple est donné ci-dessous

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

21
répondu bret 2016-04-18 15:04:47

le commentaire de Harry Moreno est correct. Ajoutez-le à android/app/src/main/AndroidManifest.xml dans la section "activité". Aussi le changement

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

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

suppression de l'orientation pour ne pas entrer en conflit avec la nouvelle ligne ajoutée, android:screenOrientation="portrait"

12
répondu mixophrygian 2016-08-01 01:35:24

mise à jour 2017

en plus des solutions affichées ci-dessus si vous utilisez Expo pour construire votre application (comme est actuellement recommandé dans les guides officiels sur React Native Blog ), alors tout ce que vous avez besoin est de mettre orientation dans app.json à "portrait" ou "paysage" et de le faire fonctionner sur iOS et Android en même temps sans avoir besoin d'éditer les fichiers de configuration XML spécifiques à iOS / Android:

"orientation": "portrait"

exemple:

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

vous pouvez également l'utiliser à l'exécution:

ScreenOrientation.allow()

exemple:

ScreenOrientation.allow(ScreenOrientation.Orientation.PORTRAIT);

plus de détails:

pour plus d'informations voir: comment désactiver la rotation de Réagir Natif?

7
répondu rsp 2017-10-13 12:39:28

vous pouvez simplement la logique en ajoutant un rappel de cycle de vie dans ReactApplication classe:

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

            }
        });
}

donc vous n'avez pas besoin de configurer AndroidManifest

3
répondu odemolliens 2017-03-27 06:20:57