Deaktivieren landscape-Modus in Android?
Wie kann ich das deaktivieren Querformat-Modus für einige der Ansichten in meine Android-app?
- Sind Sie im wesentlichen versucht zu deaktivieren, die auto-rotate Funktion. Versuchen Sie, Ihren bevorzugten Orientierung in Ihrem Porträt? http://code.google.com/android/reference/android/R.styleable.html#AndroidManifestActivity_screenOrientation
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hinzufügen
android:screenOrientation="portrait"
auf die Tätigkeit in der AndroidManifest.xml. Zum Beispiel:EDIT: Da dies hat sich zu einem super-populäre Antwort, ich fühle mich sehr schuldig, dass portrait ist selten die richtige Lösung der Probleme ist es Häufig angewendet werden.
Die großen Vorbehalte, die mit erzwungener portrait:
lifecycle-events oder richtig speichern/wiederherstellen des Zustands. Es gibt viele
Dinge, die neben der app rotation, die eine Aktivität auslösen können
Zerstörung/Erholung, einschließlich der unvermeidlichen Dinge wie multitasking. Es gibt keine Abkürzungen; lernen, zu benutzen, bündelt und
retainInstance
Fragmente.So dass die meisten apps sollten einfach lassen die Handy-sensoren, der software und der physischen Konfiguration machen Ihre eigene Entscheidung darüber, wie der Benutzer mit der app interagieren. Ein einigen Fällen können Sie immer noch wollen, zu denken, obwohl, wenn Sie nicht zufrieden sind mit dem Standard-Verhalten von
sensor
Orientierung in Ihrem Anwendungsfall:nosensor
für die Orientierung. Dies zwingt die Landschaft auf den meisten tablets und portrait auf den meisten Handys, aber ich würde trotzdem nicht empfehlen, diese für die meisten "normalen" apps (einige Nutzer genauso wie den Typ in der Landschaft softkeyboard auf Ihren Handys, und viele tablet-Nutzer Lesen im hoch - und Sie sollten lassen Sie Sie).sensorPortrait
kann besser sein, alsportrait
für Android 2.3+; dies ermöglicht eine upside-down-Porträt, das ist durchaus üblich bei tablet-Nutzung.MainActivity
und jede andere Aktivität folgt derselben Regel.Mir war nicht bewusst das
AndroidManifest.xml
Datei wechseln, bis das Lesen dieses post, also in meinen apps, habe ich dieses anstatt:Fügen Sie diese
android:screenOrientation="portrait"
in Ihrer manifest-Datei, in der Sie erklären, Ihre Aktivität wie dasWenn Sie wollen, zu tun, mit java-code versuchen
rufen Sie vor
setContentView
Methode für Ihre Tätigkeit inonCreate()
.Hoffe, dass dies helfen und leicht verständlich für alle...
Viele der Antworten hier sind darauf hindeutet, verwenden
"portrait"
in Ihrem AndroidManifest.xml Datei. Dies kann scheinen, wie eine gute Lösung - aber wie gesagt in der Dokumentation, Sie sind Aussonderung von Geräten, die möglicherweise nur noch Landschaft. Sie sind auch zwingen, bestimmte Geräte (am besten im Querformat) zu wechseln in den portrait -, nicht immer die richtige Orientierung.Mein Vorschlag ist, verwenden Sie
"nosensor"
statt. Dies lassen Sie das Gerät auf seine Standardeinstellungen bevorzugte Ausrichtung, blockiert keine Käufe/downloads auf Google Play, und wird sicherstellen, dass der sensor nicht mess up your (NDK, in meinem Fall) Spiel.Wenn Sie wollen, Benutzer-Einstellungen,
dann würde ich empfehlen
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Können Sie die Einstellungen ändern von Einstellungen-Menü.
Ich verlange das, weil mein Timer entsprechen muss, was auf dem Bildschirm, und drehen Sie den Bildschirm zerstören die aktuelle Aktivität.
Nur hinzufügen, Wie diese Zeile in Ihrem Manifest
Verwenden Sie diese in der onCreate() der Activity
Nur hinzufügen, dass dieses Attribut in Ihrer Aktivität tag.
sollten Sie ändern
android:screenOrientation="sensorPortait"
im AndroidManifest.xmlWenn Sie nicht wollen, zu gehen durch den Aufwand der addition Orientierung in jeder manifest-Eintrag der Aktivität besser, erstellen Sie eine BaseActivity-Klasse (erbt 'Aktivität' oder 'AppCompatActivity'), die vererbt werden, durch jede Tätigkeit, die von Ihrer Anwendung anstelle von 'Aktivität' oder 'AppCompatActivity' und fügen Sie einfach den folgenden code in Ihre BaseActivity:
Fügen Sie folgenden Abschnitt in Ihrer Manifest-Datei.
Diese unterstützt nur portrait-Modus
Hinzufügen
android:screenOrientation="portrait"
zu der Aktivität, die Sie deaktivieren möchten landscape-Modus.Wenn Sie deaktivieren möchten
Landscape mode for your android app
( oder eine einzelne Aktivität) alles, was Sie tun müssen, ist hinzuzufügen,android:screenOrientation="portrait"
die activity-tag inAndroidManifest.xml
- Datei.Wie:
Einen Anderen Weg , Den Programmatischen Ansatz.
Wenn Sie dies tun wollen programmatisch ie. mit Hilfe von Java-code. Sie können so tun, indem Sie hinzufügen den folgenden code in die Java-Klasse der Tätigkeit, die Sie nicht wollen, werden angezeigt, im landscape-Modus.
Ich hoffe es hilft dir .Für mehr details können Sie hier besuchen geben Sie den link-Beschreibung hier
android:screenOrientation="nosensor">
So ändern Sie die Orientierung in einige der Ansicht
Anstelle von sperren die Ausrichtung der gesamten Aktivitäten können Sie diese Klasse verwenden, um dynamisch sperren der Ausrichtung von jedem Ihrer Sicht pragmatisch:-
Machen Sie Ihre anzeigen Landschaft
Machen Sie Ihre anzeigen Portrait
Entsperren Orientierung
Orientierung Util-Klasse
verwenden
Müssen Sie die Ausrichtung der einzelnen Aktivitäten.
hinzufügen-Klasse in oncreate () - Methode
Wenn Sie Xamarin C# einige dieser Lösungen nicht funktionieren. Hier ist die Lösung, die ich gefunden, um zu arbeiten.
Oberhalb der Klasse gut funktioniert, ähnlich wie die anderen Lösungen auch nicht Global anwendbar und muss platziert werden in jeder Tätigkeit header.
Können Sie Kraft Ihrer speziellen Tätigkeit, immer im portrait-Modus, indem Sie diese schriftlich in Ihrem manifest.xml
Können Sie auch Kraft, Ihre Aktivität bleibt in postrait-Modus durch schreiben folgende Zeile in die activity onCreate () - Methode
Sollten Sie diesen code in manifestiert Datei.......
Einfach hinzufügen
android:screenOrientation="portrait"
die activity-tag in der Anwendung manifestieren.
ZB:
Können Sie für Ihre gesamte Anwendung, ohne alle Ihre Aktivitäten erweitern einer gemeinsamen Basisklasse.
Der trick ist, Sie zuerst sicher, dass Sie eine Anwendung Unterklasse in Ihrem Projekt. In Ihrer onCreate () aufgerufen, wenn die app zum ersten mal startet, registrieren Sie einen ActivityLifecycleCallbacks Objekt (API level 14+) zu empfangen Benachrichtigungen von Aktivität-Lebenszyklus-events.
Dies gibt Ihnen die Möglichkeit zum ausführen von eigenem code, wenn keine Aktivität in Ihrer app ist gestartet (oder gestoppt, oder wieder, oder was auch immer). An dieser Stelle können Sie aufrufen, setRequestedOrientation() auf die neu angelegte Aktivität.
Und vergessen Sie nicht hinzufügen, app:name=".MyApp" in Ihrer manifest-Datei.
In der
<apphome>/platform/android
Verzeichnis erstelltAndroidManifest.xml
(kopieren aus dem erzeugten).Dann fügen Sie
android:screenOrientation=
"portrait
", um ALL die Aktivitäten, die Elemente.können wir beschränken die Aktivität im portrait-oder landscape-Modus, indem Sie das Attribut oder android:screenOrientation.
wenn wir mehr als eine Aktivität in meinem Programm haben, dann haben Sie die Freiheit zu beschränken, jedem eine Tätigkeit in einem der mode und es keinen Effekt auf die anderen, die Sie nicht wollen.
Hinzufügen
android:screenOrientation="portrait"
im AndroidManifest.xml Datei.Zum Beispiel :
Füge unten commend auf Ihr Projekt,
dann verwenden Sie manifestieren Klasse wie,
React_Native (Projektordner)/
android/app/src/main/AndroidManifest.xml
Danke!
In kotlin gleiche kann man auch über ein Programm erzielt, mit unten
Es bei mir funktioniert, Versuchen Sie, fügen Sie diesen code in AndroidManifest-Datei
Entweder in manifest-Klasse.
oder programmgesteuert
Hinweis : rufen Sie diese, bevor
setContentView
Methode für Ihre Tätigkeit inonCreate()
.In der Hoffnung, jemand anderem zu helfen, das folgende Attribut auf die TÄTIGKEIT in AndroidManifest.xml alles, was Sie brauchen:
android:configChanges="orientation"
So, in voller Knoten Aktivität:
wenn Ihre Aktivität in Bezug auf das erste device orientation state,Holen Sie sich die aktuellen Geräte-Orientierung in der
onCreate
Methode und dann fix für immer: