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.
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
http://developer.Android.com/guide/topics/manifest/activity-element.html
hinzufügen Android:screenOrientation="portrait"
zu deiner Aktivität xml
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>
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"
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);
Weitere Informationen finden Sie unter: Deaktivieren der Drehung in React Native?
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
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 .