Wie kann ich den Querformatmodus für einige Ansichten in meiner Android-App deaktivieren?
android
android-manifest
android-orientation
lostInTransit
quelle
quelle
Antworten:
Fügen Sie
android:screenOrientation="portrait"
der Aktivität in der Datei AndroidManifest.xml hinzu. Zum Beispiel:EDIT: Da dies eine sehr beliebte Antwort geworden ist, fühle ich mich sehr schuldig, da das Erzwingen von Porträts selten die richtige Lösung für die Probleme ist, auf die es häufig angewendet wird.
Die wichtigsten Vorbehalte mit erzwungenem Porträt:
retainInstance
Fragmenten umzugehen.Daher sollten die meisten Apps nur die Telefonsensoren, die Software und die physische Konfiguration selbst entscheiden lassen, wie der Benutzer mit Ihrer App interagieren möchte. Einige Fälle, über die Sie möglicherweise noch nachdenken möchten, wenn Sie mit dem Standardverhalten der
sensor
Orientierung in Ihrem Anwendungsfall nicht zufrieden sind :nosensor
für die Ausrichtung verwenden. Dies erzwingt Landschaft auf den meisten Tablets und Hochformat auf den meisten Handys, aber ich würde dies für die meisten "normalen" Apps immer noch nicht empfehlen (einige Benutzer geben einfach gerne das Querformat-Softkeyboard auf ihren Handys ein, und viele Tablet-Benutzer lesen Hochformat - und du solltest sie lassen).sensorPortrait
möglicherweise besser alsportrait
für Android 2.3+. Dies ermöglicht ein auf dem Kopf stehendes Porträt, was bei der Verwendung von Tablets durchaus üblich ist.quelle
Der Dateischalter war mir
AndroidManifest.xml
erst beim Lesen dieses Beitrags bekannt, daher habe ich ihn in meinen Apps stattdessen verwendet:quelle
Fügen Sie dies
android:screenOrientation="portrait"
in Ihre Manifestdatei ein, in der Sie Ihre Aktivität wie folgt deklarierenWenn Sie Java-Code verwenden möchten, versuchen Sie es
bevor Sie die
setContentView
Methode für Ihre Aktivität in aufrufenonCreate()
.Hoffe diese Hilfe und für alle leicht verständlich ...
quelle
Viele der Antworten hier schlagen vor, sie
"portrait"
in Ihrer AndroidManifest.xml-Datei zu verwenden. Dies scheint eine gute Lösung zu sein - aber wie in der Dokumentation angegeben, wählen Sie Geräte aus, die möglicherweise nur über eine Landschaft verfügen. Sie zwingen auch bestimmte Geräte (die im Querformat am besten funktionieren) dazu, im Hochformat zu arbeiten, ohne die richtige Ausrichtung zu erhalten.Mein Vorschlag ist,
"nosensor"
stattdessen zu verwenden . Dadurch kann das Gerät seine bevorzugte Standardausrichtung verwenden, keine Käufe / Downloads bei Google Play blockieren und sicherstellen, dass der Sensor Ihr Spiel (in meinem Fall NDK) nicht durcheinander bringt.quelle
Wenn Sie Benutzereinstellungen wünschen,
dann würde ich empfehlen
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Sie können die Einstellungen über ein Einstellungsmenü ändern.
Ich benötige dies, da meine Timer dem entsprechen müssen, was auf dem Bildschirm angezeigt wird. Durch Drehen des Bildschirms wird die aktuelle Aktivität zerstört.
quelle
Fügen Sie einfach Like this Line in Ihr Manifest ein
quelle
Sie können dies für Ihre gesamte Anwendung tun, ohne dass alle Ihre Aktivitäten eine gemeinsame Basisklasse erweitern müssen.
Der Trick besteht zunächst darin, sicherzustellen, dass Sie eine Anwendungsunterklasse in Ihr Projekt aufnehmen. In onCreate (), das beim ersten Start Ihrer App aufgerufen wird, registrieren Sie ein ActivityLifecycleCallbacks-Objekt (API-Level 14+), um Benachrichtigungen über Aktivitätslebenszyklusereignisse zu erhalten.
Dies gibt Ihnen die Möglichkeit, Ihren eigenen Code auszuführen, wenn eine Aktivität in Ihrer App gestartet (oder gestoppt oder fortgesetzt oder was auch immer) wird. Zu diesem Zeitpunkt können Sie setRequestedOrientation () für die neu erstellte Aktivität aufrufen.
Und vergessen Sie nicht, app: name = ". MyApp" in Ihre Manifestdatei aufzunehmen.
quelle
Verwenden Sie dies in onCreate () der Aktivität
quelle
Sie sollten
android:screenOrientation="sensorPortrait"
in AndroidManifest.xml ändernquelle
Fügen Sie dieses Attribut einfach in Ihr Aktivitäts-Tag ein.
quelle
Wenn Sie nicht die Mühe machen möchten, in jedem Manifest-Aktivitätseintrag eine bessere Orientierung hinzuzufügen, erstellen Sie eine BaseActivity-Klasse (erbt 'Activity' oder 'AppCompatActivity'), die von jeder Aktivität Ihrer Anwendung anstelle von 'Activity' geerbt wird 'oder' AppCompatActivity 'und fügen Sie einfach den folgenden Code in Ihre BaseActivity ein:
quelle
Fügen Sie
android:screenOrientation="portrait"
der Aktivität hinzu, die Sie im Querformat deaktivieren möchten.quelle
Wenn Sie
Landscape mode for your android app
(oder eine einzelne Aktivität) deaktivieren möchten, müssen Sie lediglich Folgendes hinzufügen:android:screenOrientation="portrait"
zum Aktivitäts-Tag in derAndroidManifest.xml
Datei.Mögen:
Ein anderer Weg, programmatischer Ansatz.
Wenn Sie dies programmatisch tun möchten, z. mit Java-Code. Sie können dies tun, indem Sie den folgenden Code in die Java-Klasse der Aktivität einfügen, die im Querformat nicht angezeigt werden soll.
Ich hoffe, es hilft Ihnen. Für weitere Details, die Sie hier besuchen können, geben Sie hier die Linkbeschreibung ein
quelle
android:screenOrientation="nosensor">
So ändern Sie die Ausrichtung in einigen Ansichten
Anstatt die Ausrichtung der gesamten Aktivität zu sperren, können Sie diese Klasse verwenden, um die Ausrichtung aus jeder Ihrer Ansichten pragmatisch dynamisch zu sperren: -
Machen Sie Ihre Ansicht Landschaft
Machen Sie Ihre Ansicht Porträt
Orientierung freischalten
Orientierungs-Util-Klasse
quelle
verwenden
quelle
Sie müssen die Ausrichtung jeder Aktivität festlegen.
quelle
Klasse innerhalb der oncreate () -Methode hinzufügen
quelle
Wenn Sie Xamarin C # verwenden, funktionieren einige dieser Lösungen nicht. Hier ist die Lösung, die ich gefunden habe, um zu funktionieren.
Über der Klasse funktioniert gut, ähnlich wie bei den anderen Lösungen, auch nicht global anwendbar und muss in jedem Aktivitätsheader platziert werden.
quelle
Sie können Ihre bestimmte Aktivität zwingen, immer im Hochformat zu bleiben, indem Sie dies in Ihre manifest.xml schreiben
Sie können Ihre Aktivität auch zwingen, im Postrait-Modus zu bleiben, indem Sie die folgende Zeile in die onCreate () -Methode Ihrer Aktivität schreiben
quelle
quelle
Fügen Sie unten Lob zu Ihrem Projekt hinzu,
Dann verwenden Sie eine Manifestklasse wie React_Native (Ihr Projektordner) / android / app / src / main / AndroidManifest.xml
Vielen Dank!
quelle
In dem erstellten
<apphome>/platform/android
VerzeichnisAndroidManifest.xml
(Kopieren aus dem generierten). Fügen Sie dann ALLEN Aktivitätselementenandroid:screenOrientation=
"portrait
" hinzu.quelle
Wir können die Aktivität im Hoch- oder Querformat einschränken, indem wir das Attribut oder android: screenOrientation verwenden.
Wenn wir mehr als eine Aktivität in meinem Programm haben, haben Sie die Freiheit, eine Aktivität in einem beliebigen Modus einzuschränken, und es wirkt sich niemals auf die anderen aus, die Sie nicht möchten.
quelle
Entweder in der Manifestklasse.
oder programmatisch
Hinweis: Sie sollten dies vor der
setContentView
Methode für Ihre Aktivität in aufrufenonCreate()
.quelle
Fügen Sie
android:screenOrientation="portrait"
in AndroidManifest.xml Datei.Beispielsweise :
quelle
In der Hoffnung, jemand anderem zu helfen, ist das folgende Attribut für die AKTIVITÄT in AndroidManifest.xml alles, was Sie benötigen:
android: configChanges = "Orientierung"
Also, voller Aktivitätsknoten:
quelle
In Kotlin kann dasselbe programmatisch erreicht werden, indem unten verwendet wird
quelle
Es hat bei mir funktioniert. Versuchen Sie, diesen Code in die AndroidManifest-Datei einzufügen
quelle
Setzen Sie es in Ihr Manifest ein.
Die Ausrichtung ist im Hochformat, aber wenn das Telefon des Benutzers auf dem Kopf steht, zeigt es auch den richtigen Weg. (Ihr Bildschirm dreht sich also um 180 Grad).
Das System ignoriert dieses Attribut, wenn die Aktivität im Mehrfenstermodus ausgeführt wird .
quelle
Wenn sich Ihre Aktivität auf den ersten Status der Geräteorientierung bezieht, rufen Sie die aktuelle Geräteorientierung in der
onCreate
Methode ab und korrigieren Sie sie für immer:quelle