Android: tata letak alternatif xml untuk mode lansekap

126

Bagaimana saya bisa memiliki satu tata letak untuk lanskap dan satu untuk potret? Saya ingin mengasumsikan lebar ekstra dan menghemat ruang vertikal ketika pengguna memutar telepon ke samping.

Bryan Field
sumber

Jawaban:

217

Secara default, tata letak di /res/layoutditerapkan untuk potret dan lansekap.

Kalau sudah punya misalnya

/res/layout/main.xml

Anda dapat menambahkan folder baru /res/layout-land, menyalin main.xmlke dalamnya dan membuat penyesuaian yang diperlukan.

orientasi

Lihat juga http://www.androidpeople.com/android-portrait-amp-landscape-differeent-layouts dan http://www.devx.com/wireless/Article/40792/1954 untuk beberapa opsi lainnya.

marapet
sumber
1
haruskah saya menjaga tata letak nama tanah atau kata lain @marapet
Vamsi Pavan Mahesh
9
Anda tidak dapat menggunakan kata lain
Foo
Gambar latar belakang saya terbentang di lanskap. Saya memiliki tata letak-tanah dan bidang yang dapat ditarik..mulai membentang ... Saya sudah mencoba menggunakan gambar yang sama, gambar 9-patch, mdpi, hdpi n semua..masih tetap ada :(
Prab
apa kata untukportrait
dsdsdsdsd
@dsdsdsdsd menurut Android studio adalah layout-port
Gregzenegair
76

Dalam versi Android Studio saat ini (v1.0.2) Anda cukup menambahkan tata letak lansekap dengan mengklik tombol di editor visual yang ditunjukkan pada tangkapan layar di bawah ini. Pilih "Buat Variasi Lanskap"

Android Studio menambahkan tata letak lansekap

Reefwing
sumber
Kecuali itu menempatkan salinan baru di layout-landfolder Anda . Adakah yang tahu cara memanggil tata letak dari sana? Tidak dapat menggunakan R.layout.layout_name. Saya mencoba mengkonfigurasi tata letak saya sendiri secara manual setelah perubahan konfigurasi, terima kasih.
Azurespot
2
@NoniA. Seharusnya mendeteksi ketika telepon beralih ke lansekap dan memanggil yang dari tata letak-tanah secara otomatis.
Distwo
43

Layout di / res / layout diterapkan untuk portrait dan landscape, kecuali Anda menentukan sebaliknya. Mari kita asumsikan kita memiliki /res/layout/home.xml untuk beranda kita dan kita ingin itu terlihat berbeda dalam 2 tipe tata letak.

  1. buat folder / res / layout-land (di sini Anda akan mengatur tata letak lanskap yang disesuaikan)
  2. salin home.xml di sana
  3. buat perubahan yang diperlukan untuk itu

Sumber

Dalma
sumber
bagaimana dengan 'potret'?
dsdsdsdsd
Bagaimana dengan kualifikasi <sw> baru?
Ruchir Baronia
6

Cara tercepat untuk Android Studio 3.xx dan Android Studio 4.xx

1. Buka tab desain tata letak aktivitas

2. Di bagian atas Anda harus menekan pada tombol orientasi untuk pratinjau , ada opsi untuk membuat tata letak lanskap (periksa gambar), folder baru akan dibuat sebagai file tata letak xml Anda untuk orientasi tertentu

masukkan deskripsi gambar di sini

Shid
sumber
2

Anda dapat mengelompokkan tata letak spesifik Anda di bawah struktur folder yang benar sebagai berikut.

layout-land-target_version

yaitu

layout-land-19 // target KitKat

Anda juga dapat membuat tata letak.

Semoga ini bisa membantu Anda

Umanda
sumber
Terima kasih telah menjawab, tetapi saya tidak melihat bagaimana jawaban Anda membantu karena pertanyaan ini sudah dijawab. Mungkin Anda bisa menjelaskan manfaat -19akhiran itu? Apakah itu membantu?
Lapangan Bryan
0

Saya akan mencoba menjelaskannya segera.

Pertama, Anda mungkin memperhatikan bahwa sekarang Anda harus menggunakan ConstraintLayout seperti yang diminta oleh google (lihat pustaka androix).

Di projet studio android Anda, Anda dapat memberikan tata letak khusus layar dengan membuat res / tata letak / direktori tambahan. Satu untuk setiap konfigurasi layar yang memerlukan tata letak yang berbeda.

Ini berarti Anda harus menggunakan kualifikasi direktori dalam kedua kasus:

  • Dukungan perangkat Android
  • Android landscape atau mode potret

Sebagai hasilnya, inilah contohnya:

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

Anda juga dapat menggunakan kualifikasi dengan file sumber daya menggunakan dimens.xml.

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

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

res / values-land / dimens.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>

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

Zhar
sumber