wake-up-neo.com

Wie deaktiviere ich den Landscape-Modus im React Native Android dev-Modus?

Ich bin neu in der Android Umgebung. Ich weiß, dass iOS in Xcode ausgeführt werden kann, um die Geräteorientierung zu deaktivieren. Wie kann ich den Querformatmodus oder einen beliebigen Orientierungsmodus in React) deaktivieren? Natives Android?

Vielen Dank.

61
sungl

Hinzufügen Android:screenOrientation="portrait" zum Abschnitt activity in Android/app/src/main/AndroidManifest.xml Datei, so dass es am Ende so aussieht:

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

Es gibt verschiedene Werte für Android:screenOrientation Eigentum; Eine umfassende Liste finden Sie unter: https://developer.Android.com/guide/topics/manifest/activity-element.html

109
Gem Ubaldo

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

hinzufügen Android:screenOrientation="portrait" zu deiner Aktivität xml

44
Harry Moreno

Wie @ morenoh149 oben angegeben, ist der Name und der Wert der Eigenschaft, um dies zu tun, Android: screenOrientation = "portrait". React Native generiert eine Datei mit dem Namen AndroidManifest.xml in Ihrem Projektverzeichnis unter dem Ordner Android. In dieser XML-Datei unter dem Tag manifest/application/activity, den Sie möchten füge die Zeile hinzu Android: screenOrientation = "portrait"

Ein Beispiel ist unten gezeigt

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

Harry Morenos Kommentar ist richtig. Fügen Sie es in Android/app/src/main/AndroidManifest.xml im Abschnitt "Aktivität" hinzu. Auch ändern

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

zu Android:configChanges="keyboard|keyboardHidden|screenSize"

entfernen der Ausrichtung, damit kein Konflikt mit der neuen hinzugefügten Zeile entsteht, Android:screenOrientation="portrait"

14
mixophrygian

Update 2017

Zusätzlich zu den oben genannten Lösungen müssen Sie nur orientation festlegen, wenn Sie Expo zum Erstellen Ihrer App verwenden (wie derzeit in offiziellen Handbüchern unter React Native Blog empfohlen). in app.json auf "Hochformat" oder "Querformat" und lassen Sie es gleichzeitig auf iOS und Android) funktionieren, ohne dass iOS/Android-spezifische XML-Konfigurationsdateien bearbeitet werden müssen :

"orientation": "portrait"

Beispiel:

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

Sie können dies auch zur Laufzeit verwenden:

ScreenOrientation.allow()

Beispiel:

ScreenOrientation.allow(ScreenOrientation.Orientation.PORTRAIT);

Mehr Details:

Weitere Informationen finden Sie unter: Deaktivieren der Drehung in React Native?

10
rsp

Sie können die Logik einfach durch Hinzufügen eines Lifecycle-Rückrufs in der Klasse ReactApplication erstellen:

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

            }
        });
}

Sie müssen also nicht AndroidManifest konfigurieren

4
odemolliens

Die akzeptierte Antwort funktioniert nicht, wenn Sie react-native-navigation Verwenden. Verwenden Sie dies stattdessen:

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

Überprüfen Sie die Dokumente hier .

3
romin21