Doğrusal düzen oluşturma

Compose yöntemini deneyin
Jetpack Compose, Android için önerilen kullanıcı arayüzü araç setidir. Compose'da düzenlerle nasıl çalışacağınızı öğrenin.

LinearLayout, tüm alt öğeleri tek bir yönde (dikey veya yatay) hizalayan bir görünüm grubudur. Düzen yönünü android:orientation özelliğiyle belirtebilirsiniz.

Üç dikey dilime bölünmüş bir düzeni gösteren resim
Şekil 1. Yatay yönlendirilmiş üç alt öğe içeren bir LinearLayout.

LinearLayout öğesinin tüm alt öğeleri üst üste yerleştirilir. Bu nedenle, dikey listede genişliklerinden bağımsız olarak satır başına yalnızca bir alt öğe bulunur. Yatay liste yalnızca bir satır yüksekliğindedir ve en uzun alt öğenin yüksekliği ile dolguya eşittir. Bir LinearLayout, alt öğeler arasındaki boşluklara ve her alt öğenin yerleşimine (sağ, orta veya sol hizalama) saygı gösterir.

Düzen ağırlığı

LinearLayout, weight özelliğini android:layout_weight özelliğiyle birlikte kullanarak her bir alt öğeye ayrı ayrı atamayı da destekler. Bu özellik, bir görünüme ekranda kapladığı alan açısından "önem" değeri atar. Daha büyük bir ağırlık değeri, ebeveyn görünümünde kalan alanı doldurmak için genişlemesine olanak tanır. Alt görünümler bir ağırlık değeri belirtebilir ve görünüm grubundaki kalan alan, bildirilen ağırlıklarına göre orantılı olarak alt görünümlere atanır. Varsayılan ağırlık sıfırdır.

Eşit dağıtım

Her alt öğenin ekranda aynı miktarda alan kullandığı doğrusal bir düzen oluşturmak için dikey düzenlerde her görünümün android:layout_height değerini "0dp", yatay düzenlerde ise her görünümün android:layout_width değerini "0dp" olarak ayarlayın. Ardından, her görünümün android:layout_weight özelliğini "1" olarak ayarlayın.

Eşit olmayan dağıtım

Ayrıca, alt öğelerin ekranda farklı miktarlarda alan kullandığı doğrusal düzenler de oluşturabilirsiniz. Aşağıdaki örnekleri inceleyin:

  • Üç metin alanınız olduğunu varsayalım: İkisi 1 ağırlık değerine, üçüncüsü ise varsayılan 0 ağırlık değerine sahip. Ağırlık değeri 0 olan üçüncü metin alanı, yalnızca içeriğinin gerektirdiği alanı kaplar. Ağırlık değeri 1 olan diğer iki metin alanı, üç alanın içeriği ölçüldükten sonra kalan alanı doldurmak için eşit şekilde genişler.
  • Bunun yerine, ikisi 1 ağırlık değerine, üçüncüsü ise 2 ağırlık değerine sahip üç metin alanınız varsa üç alanın içeriği ölçüldükten sonra kalan alan şu şekilde ayrılır: Yarısı 2 ağırlık değerine sahip alana, yarısı ise 1 ağırlık değerine sahip alanlar arasında eşit olarak bölünür.

Aşağıdaki şekil ve kod snippet'inde, düzen ağırlıklarının "mesaj gönderme" etkinliğinde nasıl çalışabileceği gösterilmektedir. Alıcı alanı, Konu satırı ve Gönder düğmesi yalnızca ihtiyaç duydukları yüksekliği kaplar. Mesaj alanı, etkinliğin yüksekliğinin geri kalanını kaplar.

Dikey yönlendirilmiş bir LinearLayout'ta üç EditText ve bir Düğme gösteren resim
Şekil 2. Dikey yönlendirilmiş bir LinearLayout içinde üç metin alanı ve bir düğme.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:orientation="vertical" >
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/to" />
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/subject" />
    <EditText
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:gravity="top"
        android:hint="@string/message" />
    <Button
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_gravity="end"
        android:text="@string/send" />
</LinearLayout>

LinearLayout öğesinin her bir çocuk ekranında kullanılabilen özellikler hakkında ayrıntılı bilgi için LinearLayout.LayoutParams sayfasına bakın.