Wie spezifiziere ich verschiedene Layouts für Hoch- und Querformat?


142

Ich habe Hinweise darauf gesehen, dass zwei separate Layout-XML-Dateien für eine Aktivität angegeben werden können, eine für Hochformat und eine für Querformat. Ich habe jedoch keine Informationen darüber gefunden, wie das geht. Wie lege ich für jede Aktivität fest, welche XML-Datei das Hochformat und welches das Querformat ist?

Ist es auch möglich, unterschiedliche Layouts für unterschiedliche Bildschirmgrößen anzugeben? Wenn ja, wie wird das gemacht?

Antworten:


203

Erstellen Sie ein layout-landVerzeichnis und legen Sie die Querformatversion Ihrer Layout-XML-Datei in diesem Verzeichnis ab.


3
Bedeutet das, dass alle Aktivitäten in diesem Fall sowohl eine Quer- als auch eine Hochformatansicht definieren müssen?
Jay Askren

20
Nein, wenn keine Layout-Land-Definition vorhanden ist, wird nur das XML-Layout im Standard-Layout-Verzeichnis verwendet.
Mark B

In meinem Fall funktioniert Layout-Land nicht, wenn ich benutze, android: configChanges = "Ausrichtung | Tastatur versteckt | Bildschirmgröße"
Tushar Pandey

9
Entfernen Sie die Ausrichtung von Android: configChanges = "Ausrichtung | Tastatur versteckt | Bildschirmgröße"
Ushal Naidoo

60

Sie müssen es nur in separaten Ordnern mit unterschiedlichen Namen ablegen, je nach Ausrichtung und Auflösung. Das Gerät wählt automatisch den richtigen Ordner für die Bildschirmeinstellungen aus

Mehr Infos hier:

http://developer.android.com/guide/practices/screens_support.html

unter "Ressourcenverzeichnisqualifizierer für Bildschirmgröße und -dichte"


Funktioniert nur für Betriebssystemversionen 1.6 oder höher. Wenn Sie 1.5 unterstützen möchten, benötigen Sie diesen Link: developer.android.com/guide/practices/screens-support-1.5.html
Scott Biggs

2
@ Silvio Donnini - Links haben nicht mehr die erforderlichen Informationen.
ungefähr Code

2
@itsaboutcode Ja, das tut es: Gehen Sie zu "Verwenden von Konfigurationsqualifikatoren"
Danation

26

Für Mausliebhaber! Ich sage, klicken Sie mit der rechten Maustaste auf den Ressourcenordner und Add new resource filewählen Sie unter Verfügbare Qualifikationsmerkmale Folgendes aus orientation:

Geben Sie hier die Bildbeschreibung ein


Sie können dies jedoch manuell tun, indem Sie beispielsweise den Unterordner "layout-land" hinzufügen

"Ihr-Projekt-Verzeichnis \ app \ src \ main \ res"

Seitdem funktioniert jede layout.xml-Datei in diesem Unterordner nur automatisch im Querformat .

Verwenden Sie "Layout-Port" für den Porträtmodus.


1
Das hat bei mir funktioniert. Ich habe eine neue Layoutdatei hinzugefügt, die den gleichen Namen wie die Hochformatversion hat. Android Studio hat automatisch einen Ordner für dieses Layout erstellt. Ein Layout für Hochformat und ein anderes für Querformat. Das neue Layout wird beim Drehen des Bildschirms automatisch angezeigt.
Smitty-Werben-Jäger-Manjenson

23

Nur eine Erinnerung:

Entfernen orientationvon android:configChangesAttribute für die Aktivität in Ihrer Manifest - xmlDatei , wenn Sie es definiert:

android:configChanges="orientation|screenLayout|screenSize"

1
Was ist, wenn ich android: configChanges = "Ausrichtung | BildschirmLayout | Bildschirmgröße" in meinem Manifest haben muss, da einige meiner Fragmente sowohl in Ausrichtung als auch nicht in Ausrichtung sein können, aber dennoch separate Layouts für Quer- und Hochformat für diese Fragmente benötigen kann die Ausrichtung dynamisch ändern?
Natansalda

9

Schnellster Weg für Android Studio 3.xx und Android Studio 4.xx.

1. Wechseln Sie zur Registerkarte Design des Aktivitätslayouts

2. Oben sollten Sie auf die Schaltfläche Ausrichtung für Vorschau klicken. Es besteht die Möglichkeit, ein Querformat zu erstellen (Bild überprüfen). Ein neuer Ordner wird als XML-Layoutdatei für diese bestimmte Ausrichtung erstellt

Geben Sie hier die Bildbeschreibung ein


4

Ich denke, der einfachste Weg in den neuesten Android-Versionen ist es, in den Design-Modus eines XML (nicht Text) zu wechseln.

Wählen Sie dann im Menü die Option - Landschaftsvariation erstellen. Dadurch wird in wenigen Sekunden eine Landschafts-XML ohne Probleme erstellt. Mit der neuesten Android Studio-Version können Sie sofort eine Landschaftsansicht erstellen.

Geben Sie hier die Bildbeschreibung ein

Ich hoffe das funktioniert bei dir.


3

Erstellen Sie ein neues Verzeichnis layout-land, erstellen Sie dann eine xmlDatei mit demselben Namen layout-landwie das layoutVerzeichnis und richten Sie dort Ihren Inhalt für den Querformatmodus aus.

Beachten Sie, dass die ID des Inhalts in beiden gleich xmlist.


3

Die letzte Zeile unten ist ein Beispiel für die Anwendung von zwei Quantifizierern: Querformat und Bildschirm mit kleinster Breite (600 dp). Aktualisieren Sie 600dp mit den benötigten.

res/layout/main_activity.xml                # For handsets
res/layout-land/main_activity.xml           # For handsets in landscape
res/layout-sw600dp/main_activity.xml        # For 7” tablets
res/layout-sw600dp-land/main_activity.xml   # For 7” tablets in landscape

Dies gilt auch für Dimensionen

res/values/dimens.xml                # For handsets
res/values-land/dimens.xml           # For handsets in landscape
res/values-sw600dp/dimens.xml        # For 7” tablets
res/values-sw600dp-land/dimens.xml   # For 7” tablets in landscape

Eine nützliche Gerätemetrik: https://material.io/tools/devices/


2

Oder benutze dies:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
            android:scrollbars="vertical" 
            android:layout_height="wrap_content" 
            android:layout_width="fill_parent">

  <LinearLayout android:orientation="vertical"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent">

     <!-- Add your UI elements inside the inner most linear layout -->

  </LinearLayout>
</ScrollView>

0
  1. Rechtsklick auf res Ordner,
  2. Neu -> Android-Ressourcendatei
  3. Wählen Sie unter Verfügbare Qualifikationsmerkmale Ausrichtung,
  4. zum ausgewählten Qualifikationsmerkmal hinzufügen
  5. Wählen Sie unter Bildschirmausrichtung die Option Querformat aus
  6. drücke OK

Mit Android Studio 3.4.1 wird kein layout-landOrdner mehr erstellt . Es wird ein Ordner erstellt und zwei Layoutdateien zusammengefügt.

Geben Sie hier die Bildbeschreibung ein


2
Falsch. Sie verwenden nicht den Ordneransichtsmodus (wie "Projekt"). Sie verwenden wahrscheinlich den Ansichtsmodus "Android", in dem Dateien wie in Ihrem Screenshot in virtuellen Ordnern zusammengefasst werden. Die tatsächliche Ordnerstruktur entspricht jedoch weiterhin der Beschreibung in jedem anderen Beitrag.
monK_
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.