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 Native Android deaktivieren?
Vielen Dank.
Antworten:
Fügen Sie
android:screenOrientation="portrait"
demactivity
Abschnitt in derandroid/app/src/main/AndroidManifest.xml
Datei hinzu, sodass er am Ende folgendermaßen aussieht:<activity android:name=".Activity" android:label="Activity" android:screenOrientation="portrait" android:configChanges="keyboardHidden|orientation|screenSize"> </activity>
Es gibt verschiedene Werte für die
android:screenOrientation
Eigenschaft. Eine umfassende Liste finden Sie unter: https://developer.android.com/guide/topics/manifest/activity-element.htmlquelle
sensorPortrait
anstatt,portrait
damit es auch "verkehrt herum" verwendet werden kann. Wenn Sie auf API 18+ abzielen, sollten Sie diese verwendenuserPortrait
, da dies berücksichtigt, ob der Benutzer die Ausrichtung gesperrt hat. Weitere Informationen finden Sie in den Dokumenten: developer.android.com/guide/topics/manifest/…android:screenOrientation
in der Antwort vorgeschlagene Einstellung funktioniert jetzt einwandfrei .http://developer.android.com/guide/topics/manifest/activity-element.html
Fügen Sie
android:screenOrientation="portrait"
Ihrer Aktivität XML hinzuquelle
Wie @ morenoh149 oben angegeben hat, ist der Name und der Wert der Eigenschaft dafür android: screenOrientation = "Porträt". React Native generiert eine Datei namens AndroidManifest.xml in Ihrem Projektverzeichnis unter dem Android-Ordner. Innerhalb dieser XML-Datei unter dem Tag Manifest / Anwendung / Aktivität würden Sie die Zeile hinzufügen android : screenOrientation = "Porträt"
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>
quelle
Harry Morenos Kommentar ist richtig. Fügen Sie es zu 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 neu hinzugefügten Zeile auftritt.
android:screenOrientation="portrait"
quelle
Update 2017
Zusätzlich zu den gebuchten Lösungen oben , wenn Sie Expo verwenden Ihre App zu bauen (wie sie derzeit in der offiziellen Reiseführern empfohlen wird auf india Blog Reagieren ) , dann brauchen Sie ist zu Satz
orientation
inapp.json
zu „Portrait“ oder „Landschaft“ und es funktioniert auf iOS und Android gleichzeitig, 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 Rotation in React Native?
quelle
Die akzeptierte Antwort funktioniert nicht, wenn Sie verwenden
react-native-navigation
. Verwenden Sie stattdessen Folgendes:Navigation.setDefaultOptions({ layout: { orientation: ["portrait"], }, });
Überprüfen Sie die Dokumente hier .
quelle
Sie können die Logik einfach durch Hinzufügen eines Lebenszyklus-Rückrufs in der
ReactApplication
Klasse festlegen :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 konfigurieren
AndroidManifest
quelle
AndroidManifest.xml
hatte keine Auswirkungen. Ich bin mir nicht sicher, ob ich es einfach nicht richtig veröffentlicht habe. Ich fand ich musste rufensetRequestedOrientation
inonActivityResumed
undonActivityStarted
zu.Öffnen Sie einfach Ihre
android/app/src/main/AndroidManifest.xml
Fügen Sie diese Zeile
android:screenOrientation="portrait"
und denandroid:configChanges="keyboard|keyboardHidden|orientation|screenSize
Abschnitt mit den Aktivitäten hinzuEs sieht ungefähr so aus
<activity android:name=".Activity" android:theme="@style/SplashTheme" android:label="@string/app_name" android:screenOrientation="portrait" android:configChanges="keyboard|keyboardHidden|orientation|screenSize"> .....your other stuff </activity>
Wenn es nicht funktioniert, können Sie die reaktionsnative Ausrichtung verwenden
quelle