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 özelliği, öğelerin yerleştirileceği yönü belirleyen ana ekseni tanımlar.

  • Row (varsayılan): Ana ekseni yatay olarak ayarlar. Soldan sağa yerel ayarlarda bu işlem soldan sağa doğru yapılır. Sağdan sola yerel ayarlarda ise bunun tersi geçerlidir.
  • 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 hizalanır.

Center

Öğeler, ana eksenin merkezine hizalanır.

End

Öğeler, ana eksenin sonuna hizalanır.

SpaceBetween

Öğeler, aralarında boşluk olacak şekilde 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 etraflarında eşit boşluk olacak şekilde 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ı. Birden fazla öğe satırı, çapraz eksenin sonuna hizalanır. Birden fazla öğe satırı, çapraz eksenin merkezine hizalanır. Birden fazla öğe satırı, çapraz ekseni dolduracak şekilde esnetilir. Çapraz eksen boyunca aralarında boşluk olacak şekilde dağıtılmış 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 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: Yeni satırın çapraz eksenin ters yönünde eklenmesi dışında Wrap ile aynıdır. Ö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 kişilik 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 kişilik 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 kişilik 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.