Dikey ve yatay yönler için nasıl farklı düzenler belirleyebilirim?


142

Bir etkinlik için iki ayrı düzen xml dosyası belirtebilme referansları gördüm, biri Dikey, diğeri Manzara için. Ancak bunun nasıl yapılacağı hakkında herhangi bir bilgi bulamadım. Her bir etkinlik için hangi xml dosyasının dikey yerleşim ve hangisi Yatay düzen olduğunu nasıl belirleyebilirim?

Farklı ekran boyutları için farklı düzenler belirlemek de mümkün müdür? Eğer öyleyse, bu nasıl yapılır?

Yanıtlar:


203

Bir layout-landdizin oluşturun ve düzen XML dosyanızın yatay sürümünü bu dizine yerleştirin.


3
Bunu yaparsam, tüm faaliyetlerin hem manzara hem de portre görünümü tanımlaması gerektiği anlamına mı geliyor?
Jay Askren

20
Hayır, düzen-arazi tanımı yoksa, yalnızca standart düzen dizinindeki XML düzenini kullanır.
Mark B

benim durumumda, düzen-arazi kullanırken kullanmıyorum, android: configChanges = "orientation | keyboardHidden | screenSize"
Tushar Pandey

9
Android'den yönünü kaldırın: configChanges = "orientation | keyboardHidden | screenSize"
Ushal Naidoo

60

Yönüne ve çözünürlüğe bağlı olarak farklı adlara sahip ayrı klasörlerin altına koymanız yeterlidir, cihaz ekran ayarları için otomatik olarak doğru olanı seçecektir

Daha fazla bilgi burada:

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

"Ekran boyutu ve yoğunluğu için kaynak dizini niteleyicileri" altında


Yalnızca işletim sistemi 1.6 veya üstü sürümlerde çalışır. 1.5'i desteklemek istiyorsanız, bu bağlantıya ihtiyacınız var: developer.android.com/guide/practices/screens-support-1.5.html
Scott Biggs

2
@Silvio Donnini - bağlantılar artık gerekli bilgiye sahip değil.
itsaboutcode

2
@itsaboutcode Evet öyle: "Yapılandırma niteleyicileri kullanma"
bölümüne gidin

27

Fare severler için! Kaynaklar klasörüne sağ tıklayın Add new resource fileve Kullanılabilir niteleyicilerden şunu seçin orientation:

resim açıklamasını buraya girin


Ama yine de "layout-land" alt klasörünü

"Sizin-Proje-Dizin \ app \ src \ ana \ res"

o zamandan beri, bu alt klasör altındaki herhangi bir layout.xml dosyası yalnızca yatay modda otomatik olarak çalışacaktır .

Portre modu için "düzen bağlantı noktası" kullanın.


1
Bu benim için çalıştı. Portre sürümüyle aynı ada sahip yeni bir düzen dosyası ekledim. Android Studio, bu düzen için otomatik olarak bir klasör oluşturdu. Portre için bir düzen ve manzara için başka bir düzen. Ekranı döndürürken yeni düzen otomatik olarak görüntülenir.
Smitty-Werben-Jager-Manjenson

23

Sadece bir hatırlatıcı:

Kaldır orientationdan android:configChangesManifest'inizde aktivite için öznitelik xmlbunu tanımlı eğer dosyanın:

android:configChanges="orientation|screenLayout|screenSize"

1
benim parçalarımda hem yönelimde hem de bazılarında bulunmadığından, yine de bu parçalar için manzara ve portre için ayrı düzenlere ihtiyaç duyduğundan, manifestimde android: configChanges = "orientation | screenLayout | screenSize" olması gerekiyorsa dinamik olarak yön değiştirebilir?
natansalda

9

Android Studio 3.xx ve Android Studio 4.xx için en hızlı yol

Etkinlik planının tasarım sekmesine gidin

2. önizleme düğmesi için yönlendirmeye basmanız gereken en üstte, bir manzara düzeni oluşturma seçeneği vardır (resmi kontrol edin), belirli bir yön için xml düzen dosyanız olarak yeni bir klasör oluşturulur

resim açıklamasını buraya girin


4

En son Android sürümlerinde en kolay yolun XML değil (Metin değil) Tasarım moduna geçmektir.

Ardından menüden - Yatay Varyasyon Oluştur seçeneğini belirleyin. Bu, birkaç saniye içinde sorunsuz bir xml oluşturur. En son Android Studio sürümü, hemen bir manzara görünümü oluşturmanıza olanak tanır.

resim açıklamasını buraya girin

Umarım bu senin için işe yarar.


3

Yeni bir dizin oluşturun layout-landsonra oluşturmak, xmlaynı adla dosyayı layout-landolduğu gibi layoutdizin ve Peyzaj modu için orada içeriğinizi hizalayın.

Her ikisinde de içerik kimliğinin xmlaynı olduğunu unutmayın.


3

Aşağıdaki son satır iki nicelleştirici uygulamak için bir örnektir: yatay ve en küçük genişlik (600dp) ekran. 600dp'yi ihtiyacınız olanlarla güncelleyin.

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

Yukarıdakiler de dimenler için geçerlidir

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

Yararlı bir cihaz ölçümleri: https://material.io/tools/devices/


2

Veya bunu kullanın:

<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. Res klasörünü sağ tıklayın,
  2. Yeni -> Android Kaynak Dosyası
  3. Kullanılabilir niteleyiciler'de Oryantasyon'u seçin,
  4. Seçilen niteleyiciye ekle
  5. Ekran yönü'nde Yatay'ı seçin
  6. tamam tuşuna basın

Android Studio 3.4.1 kullanıldığında, artık layout-landklasör oluşturulmaz . Bir klasör oluşturacak ve iki düzen dosyasını bir araya getirecektir.

resim açıklamasını buraya girin


2
Yanlış. Klasör görüntüleme modunu kullanmıyorsunuz ("Proje" gibi). Muhtemelen dosyaları sanal klasörlerde ekran görüntünüzdeki gibi bir araya getiren "Android" görünüm modunu kullanıyorsunuz, ancak asıl klasör yapısı hala buradaki diğer tüm yayınların nasıl tanımlandığıdır.
monK_
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.