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.
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.
Antworten:
Standardmäßig werden die Layouts in /res/layout
sowohl 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.xml
in diesen kopieren und die erforderlichen Anpassungen vornehmen.
Weitere Optionen finden Sie unter http://www.androidpeople.com/android-portrait-amp-landscape-differeent-layouts und http://www.devx.com/wireless/Article/40792/1954 .
portrait
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"
layout-land
Ordner 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.
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.
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
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
-19
Suffix erklären ? Ist das irgendwie hilfreich?
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:
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