Android: Alternative Layout-XML für den Querformatmodus

126

Wie kann ich ein Layout für Querformat und eines für Hochformat haben? Ich möchte zusätzliche Breite annehmen und vertikalen Raum sparen, wenn der Benutzer das Telefon zur Seite dreht.

Bryan Field
quelle

Antworten:

217

Standardmäßig werden die Layouts in /res/layoutsowohl im Hoch- als auch im Querformat angewendet.

Wenn Sie zum Beispiel haben

/res/layout/main.xml

Sie können einen neuen Ordner hinzufügen /res/layout-land, main.xmlin diesen kopieren und die erforderlichen Anpassungen vornehmen.

Orientierung

Weitere Optionen finden Sie unter http://www.androidpeople.com/android-portrait-amp-landscape-differeent-layouts und http://www.devx.com/wireless/Article/40792/1954 .

marapet
quelle
1
sollte ich den Namen layout-land oder ein anderes Wort @marapet
Vamsi Pavan Mahesh
9
Sie können kein anderes Wort verwenden
Foo
Mein Hintergrundbild erstreckt sich über die Landschaft. Ich habe Layout-Land und Drawable-Land. Trotzdem erstreckt es sich. Ich habe versucht, dasselbe Bild, 9-Patch-Bilder, mdpi, hdpi n all zu verwenden. Das Problem besteht weiterhin :(
Prabs
Was ist das Wort fürportrait
dsdsdsdsd
@dsdsdsdsd laut Android Studio ist es Layout-Port
Gregzenegair
76

In der aktuellen Version von Android Studio (v1.0.2) können Sie einfach ein Querformat hinzufügen, indem Sie auf die Schaltfläche im visuellen Editor klicken (siehe Abbildung unten). Wählen Sie "Landschaftsvariation erstellen"

Android Studio fügt Querformat hinzu

Reefwing
quelle
Außer es legt eine neue Kopie in Ihrem layout-landOrdner ab. Irgendeine Idee, wie man von dort aus ein Layout aufruft? Kann nicht verwenden R.layout.layout_name. Ich versuche, meine eigenen Layouts bei Konfigurationsänderungen manuell zu konfigurieren, danke.
Azurespot
2
@NoniA. Es sollte erkennen, wann das Telefon auf Querformat umschaltet und das Telefon automatisch aus dem Layout-Land aufruft.
Distwo
43

Die Layouts in / res / layout werden sowohl auf Hoch- als auch auf Querformat angewendet, sofern Sie nichts anderes angeben. Nehmen wir an, wir haben /res/layout/home.xml für unsere Homepage und möchten, dass es in den beiden Layouttypen anders aussieht.

  1. Ordner / res / layout-land erstellen (hier behalten Sie Ihre landschaftsangepassten Layouts bei)
  2. Kopieren Sie dort home.xml
  3. Nehmen Sie die erforderlichen Änderungen vor

Quelle

Dalmas
quelle
Was ist mit "Porträt"?
dsdsdsdsd
Was ist mit den neuen <sw> Qualifikanten?
Ruchir Baronia
6

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

Shid
quelle
2

Sie können Ihr spezifisches Layout wie folgt unter der richtigen Ordnerstruktur gruppieren.

layout-land-target_version

dh

layout-land-19 // Ziel KitKat

Ebenso können Sie Ihre Layouts erstellen.

Hoffe das wird dir helfen

Umanda
quelle
Vielen Dank für die Antwort, aber ich sehe nicht, wie Ihre Antwort hilft, da diese Frage bereits beantwortet wurde. Vielleicht könnten Sie den Nutzen des -19Suffix erklären ? Ist das irgendwie hilfreich?
Bryan Field
0

Ich werde versuchen, es in Kürze zu erklären.

Zunächst stellen Sie möglicherweise fest, dass Sie jetzt das von Google angeforderte ConstraintLayout verwenden sollten (siehe androix-Bibliothek).

In Ihrem Android Studio-Projekt können Sie bildschirmspezifische Layouts bereitstellen, indem Sie zusätzliche Auflösungen / Layouts / Verzeichnisse erstellen. Eine für jede Bildschirmkonfiguration, die ein anderes Layout erfordert.

Dies bedeutet, dass Sie in beiden Fällen das Verzeichnisqualifikationsmerkmal verwenden müssen:

  • Unterstützung für Android-Geräte
  • Android Quer- oder Hochformat

Als Ergebnis hier ein Beispiel:

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

Sie können das Qualifikationsmerkmal auch mit Ressourcendateien verwenden, indem Sie dimension.xml verwenden.

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 ​​/ dimension.xml

<resources>
    <dimen name="grid_view_item_height">70dp</dimen>
</resources>

res / values-land / dimension.xml

<resources>
    <dimen name="grid_view_item_height">150dp</dimen>
</resources>

your_item_grid_or_list_layout.xml

<androidx.constraintlayout.widget.ConstraintLayout
        android:id="@+id/constraintlayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content

    <ImageView
            android:id="@+id/image"
            android:layout_width="0dp"
            android:layout_height="@dimen/grid_view_item_height"
            android:layout_marginEnd="8dp"
            android:layout_marginStart="8dp"
            android:layout_marginTop="8dp"
            android:background="@drawable/border"
            android:src="@drawable/ic_menu_slideshow">

</androidx.constraintlayout.widget.ConstraintLayout>

Quelle: https://developer.android.com/training/multiscreen/screensizes

Zhar
quelle