Kapsayıcı davranışını ayarlama

FlexBox kapsayıcısının davranışını yapılandırmak için bir FlexBoxConfig bloğu oluşturun ve config parametresini kullanarak sağlayın.

FlexBox(
    config = {
        direction(FlexDirection.Column)
        wrap(FlexWrap.Wrap)
        alignItems(FlexAlignItems.Center)
        alignContent(FlexAlignContent.SpaceAround)
        justifyContent(FlexJustifyContent.Center)
        gap(16.dp)
    }
) { // child items
}

Düzen yönünü, sarmalama davranışını, hizalamayı ve öğeler arasındaki boşlukları tanımlamak için FlexBoxConfig simgesini kullanın.

Düzen yönü

direction işlevi, öğelerin yerleştirileceği yönü belirleyen ana ekseni ayarlar. Aşağıdaki değerleri kabul eder:

  • Row (varsayılan): Ana ekseni yatay olarak ayarlar. Soldan sağa yerel ayarlarda bu soldan sağa, sağdan sola yerel ayarlarda ise sağdan sola olur.
  • RowReverse: Row yönünü tersine çevirir.
  • Column: Ana ekseni dikey, yukarıdan aşağıya olacak şekilde ayarlar.
  • ColumnReverse: Column yönünü tersine çevirir.

Öğeleri hizalama ve fazla alanı dağıtma

Aşağıdaki bölümlerde, öğelerin nasıl hizalanacağı ve ana eksen ile çapraz eksen boyunca fazladan alanın nasıl dağıtılacağı açıklanmaktadır.

Ana eksen boyunca

Öğeleri ana eksen boyunca dağıtmak için justifyContent özelliğini kullanın. Aşağıdaki tabloda, yön Row olduğunda nasıl bir davranış sergilendiği gösterilmektedir.

Yatay ana eksen resmi.

Start

Öğeler, ana eksenin başlangıcına göre hizalanır.

Center

Öğeler, ana eksenin merkezine hizalanır.

End

Öğeler, ana eksenin sonuna hizalanır.

SpaceBetween

Öğeler, aralarında boşluk bırakılarak ana eksen boyunca dağıtılır.

SpaceAround

Öğeler, ana eksen boyunca etraflarında boşluk olacak şekilde dağıtılır.

SpaceEvenly

Öğeler, ana eksen boyunca eşit aralıklarla dağıtılır.

Çapraz eksen boyunca

Öğeleri tek bir satırda çapraz eksen boyunca hizalamak için alignItems kullanın. Bu davranış, alignSelf değiştiricisi kullanılarak tek tek öğeler tarafından geçersiz kılınabilir.

Aşağıdaki resimlerde, yön Row olduğunda nasıl bir davranış sergilendiği gösterilmektedir:

Dikey çapraz eksen resmi. Öğeler, çapraz eksenin başlangıcına hizalanır. Öğeler, çapraz eksenin sonuna hizalanır. Öğeler, çapraz eksenin merkezine hizalanır. Öğeler, çapraz ekseni dolduracak şekilde esnetilir. Öğeler, çapraz eksen boyunca referans değerlerine göre hizalanır.

Start

End

Center

Stretch

Baseline

Satırları çapraz eksene hizalamak ve satırlar arasındaki boşluğu eşit olarak dağıtmak için alignContent simgesini kullanın. Bu özellik yalnızca birden fazla satır olduğunda geçerlidir (kaydırma etkinleştirilmişse). Aşağıdaki resimlerde, yön Row olduğunda nasıl bir davranış sergilendiği gösterilmektedir:

Dikey çapraz eksen resmi. Çapraz eksenin başlangıcına hizalanmış birden fazla öğe satırı. Çapraz eksenin sonuna hizalanmış birden fazla öğe satırı. Çapraz eksenin ortasına hizalanmış birden fazla öğe satırı. Birden fazla öğe satırı, çapraz ekseni dolduracak şekilde esnetilir. Çapraz eksen boyunca dağıtılmış ve aralarında boşluk bulunan birden fazla öğe satırı. Çapraz eksen boyunca dağıtılmış ve etraflarında boşluk olan birden fazla öğe satırı.

Start

End

Center

Stretch

SpaceBetween

SpaceAround

Öğeleri sarmalama

Sarma, FlexBox kapsayıcının çok satırlı olmasına olanak tanır ve sığmayan öğeleri çapraz eksen boyunca yeni bir satıra veya sütuna taşır. wrap kullanarak sarmalama davranışını yapılandırın.

FlexWrap değer

Row yönünü kullanan örnek

NoWrap (varsayılan): Öğelerin kaydırılmasını engeller. Ana boyut yetersizse öğeler taşar.

Sarmalama devre dışı bırakıldığından tek bir satırdaki öğeler kapsayıcıyı aşıyor.

Wrap: Bir öğe (ve boşluk) için yeterli alan olmadığında çapraz eksen yönünde yeni bir satır oluşturulur. Örneğin, yön Row ise aşağıya yeni bir satır eklenir.

Sarmalama etkin olduğundan, öğeler aşağıdaki yeni satıra sarılıyor.

WrapReverse: Wrap ile aynıdır. Tek fark, yeni satırın çapraz eksenin ters yönünde eklenmesidir. Örneğin, yön Row ise yukarıya yeni bir satır eklenir.

Ters sarmalama etkin olduğundan öğeler yukarıda yeni bir satıra kaydırılıyor.

Aşağıdaki örnekte FlexBox sarmalama algoritmasının nasıl çalıştığı gösterilmektedir. FlexBox kapsayıcısının ana boyutu 100dp, wrap değeri FlexWrap.Wrap olarak ayarlanmış ve 8dp boşluğu var. Bu listede sırasıyla basis 20dp, 40dp ve 50dp içeren üç öğe yer alıyor.

Kuyrukta 100dp boş yer var. 1. çocuk 20dp. Yer olduğu için 1. çocuk sıraya yerleştirilir.

FlexBox kapsayıcısına yerleştirilen ilk öğe.
Şekil 1. FlexBox kapsayıcısına yerleştirilen ilk öğe.

Kuyrukta 80dp boş yer var. Açık 8dp. 2. çocuk 40dp. Gerekli alan 48dp. Boşluk olduğundan, boşluk ve 2. Çocuk sıraya yerleştirilir.

FlexBox kapsayıcısına yerleştirilen ilk öğe.
Şekil 2. İlk öğeden sonra FlexBox kapsayıcısına yerleştirilen ikinci öğe.

Kuyrukta 32dp boş yer var. Açık 8dp. 3. çocuk 50dp. Gerekli alan 58dp. Mevcut satırda yeterli alan olmadığından 3. çocuk yeni bir satıra yerleştirilir.

Üçüncü öğe, ilk satıra sığmadığı için yeni bir satıra yerleştirildi.
Şekil 3. Üçüncü öğe, ilk satıra sığmadığı için yeni bir satıra yerleştirildi.

Öğeler arasına boşluk ekleme

rowGap ve columnGap kullanarak satırlar ve sütunlar arasına boşluk ekleyin. Bu, alt öğelere aralık değiştiriciler eklemeyi önlemek için kullanışlıdır.

Satır aralığı, öğeler arasına dikey boşluk ekler. Sütun aralığı, öğeler arasına yatay boşluk ekler. Gap, öğeler arasına hem yatay hem de dikey boşluk ekler.

rowGap

Öğeler ve satırlar arasına dikey boşluk ekler.

columnGap

Öğeler ve satırlar arasına yatay boşluk ekler.

gap, hem columnGap hem de rowGap öğesini ekleyen, kullanım kolaylığı amaçlı bir işlevdir.