Ich möchte, dass meine Android-Anwendung nur im Hochformat ausgeführt wird.


358

Ich möchte, dass meine Android-Anwendung nur im Hochformat ausgeführt wird. Wie kann ich das machen?

Antworten:


778

Legen Sie im Manifest Folgendes für alle Ihre Aktivitäten fest:

<activity android:name=".YourActivity"
    android:configChanges="orientation"
    android:screenOrientation="portrait"/>

Lassen Sie mich erklären:

  • Wenn android:configChanges="orientation"Sie Android mitteilen, dass Sie für die Änderungen der Ausrichtung verantwortlich sind.
  • android:screenOrientation="portrait" Sie legen den Standardausrichtungsmodus fest.

50
Wäre nicht großartig, wenn wir eine "globale" Ausrichtung für ALLE Aktivitäten in der Anwendung festlegen könnten? Sieht so aus, als hätten wir keine andere Wahl, als das Attribut "Porträt" für jede Aktivität zu kopieren / einzufügen ...
Eduardo Coelho

63
Es ist genug zu setzenandroid:screenOrientation="portrait"
Bis zum

11
@EduardoCoelho Sie können tatsächlich eine Basisklasse PortraitActivityerstellen und in onCreate call setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)Alle Aktivitäten, die dies erweitern, drehen sich nicht
Twinone

1
@Twinone: Wie wäre es, wenn verschiedene Aktivitäten von verschiedenen Unterklassen von erben möchten, von denen sich Activityeine Aktivität erstreckt, ListActivitywährend andere sich einfach von erstrecken Activity?
RestInPeace

3
@ RestInPeace Ja, guter Punkt. Aber das ist nicht meine Idee, falsch zu sein, das ist nur Java, das keine Mehrfachvererbung unterstützt :)
Twinone

57

In Android Manifest - Datei, setzte Attribut für Ihre <activity>DASSandroid:screenOrientation="portrait"


2
Lassen Sie mich hinzufügen: von Android Sudio 3.6 müssen android: screenOrientation = "fullSensor" oder android: screenOrientation = "unspecified" verwenden. fullSensor Bedeutet, dass Sie entweder die Option "Ausschalten" aktiviert haben oder nicht. Dadurch wird die Ausrichtung geändert, je nachdem, wie Sie das Telefon bewegen. nicht spezifiziert Bedeutet, wenn Sie die Option Drehen deaktiviert haben, bleibt sie nur in dieser Ausrichtung, und wenn nicht, ändert sie die Ausrichtung, je nachdem, wie Sie das Telefon bewegen.
Kirguduck

24

Es gibt zwei Möglichkeiten:

  1. Fügen Sie android:screenOrientation="portrait"für jede Aktivität in der Manifestdatei hinzu
  2. Fügen Sie this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);in jeder Java-Datei hinzu.

14
Die zweite Option hat den schrecklichen Nebeneffekt, dass Ihre Aktivität neu gestartet wird, wenn sie in Portrait gestartet wird.
Joakim

4

im Manifest:

<activity android:name=".activity.MainActivity"
        android:screenOrientation="portrait"
        tools:ignore="LockedOrientationActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

oder: in der MainActivity

@SuppressLint("SourceLockedOrientationActivity")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

Ich verstehe app/src/main/AndroidManifest.xml; lineNumber: 20; columnNumber: 50; The prefix "tools" for attribute "tools:ignore" associated with an element type "activity" is not bound.. Das Hinzufügen xmlns:tools="http://schemas.android.com/tools"des
Stammelements

3

Alter Beitrag, den ich kenne. Um Ihre App immer im Hochformat auszuführen, auch wenn die Ausrichtung geändert werden kann oder wird usw. (z. B. auf Tablets), habe ich diese Funktion entwickelt, mit der das Gerät in die richtige Ausrichtung gebracht wird, ohne dass Sie wissen müssen, wie das Hoch- und Querformat ist Funktionen sind auf dem Gerät organisiert.

   private void initActivityScreenOrientPortrait()
    {
        // Avoid screen rotations (use the manifests android:screenOrientation setting)
        // Set this to nosensor or potrait

        // Set window fullscreen
        this.activity.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

        DisplayMetrics metrics = new DisplayMetrics();
        this.activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);

         // Test if it is VISUAL in portrait mode by simply checking it's size
        boolean bIsVisualPortrait = ( metrics.heightPixels >= metrics.widthPixels ); 

        if( !bIsVisualPortrait )
        { 
            // Swap the orientation to match the VISUAL portrait mode
            if( this.activity.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT )
             { this.activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); }
            else { this.activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT ); }
        }
        else { this.activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR); }

    }

Klappt wunderbar!

HINWEIS: Ändern Sie this.activitydurch Ihre Aktivität oder fügen Sie es der Hauptaktivität hinzu und entfernen Sie this.activity;-)


-5

ich benutze

 android:screenOrientation="nosensor"

Dies ist hilfreich, wenn Sie den Upside-Down-Portrait-Modus nicht unterstützen möchten.


Wenn dies das tut, was ich denke, zwingt es den Bildschirm nicht wirklich zum Hochformat, was Sie vielleicht tun möchten.
Lassi Kinnunen

Warum entfernst du nicht einfach diesen Kommentar? es macht keinen Sinn
Alexander Zaldostanov

Fügen Sie in der Android Manifest-Datei einfach ein Attribut für Ihre <Aktivität> dieses Android hinzu: screenOrientation = "Porträt"
Avinash Shinde

Vielen Dank für Ihre Antwort, das ist hilfreich für mich.
Md. Shofiulla
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.