Jetpack Compose'ta Row: nedir, composable özellikleri ve nasıl çalışır

Yazar: IT Sectr Yayınlanma: 2026-06-28 Okuma süresi: 10 dk

Row, Jetpack Compose'ta alt öğeleri yatay bir satıra yerleştirmek için kullanılan bir composable işlevidir. Column'un aksine Row, öğeleri soldan sağa sıralar ve horizontalArrangement ile verticalAlignment parametreleri aracılığıyla düzen yapılandırmasını destekler. Google Android Documentation, 2025'e göre Row, Column ve Box ile birlikte Compose'un üç temel kapsayıcısından biridir ve yatay arayüz yapıları oluşturmak için kullanılır: düğme satırları, giriş alanları ve metinli simgeler.

Önemli Noktalar

  • Row, alt composable öğelerini soldan sağa tek bir satıra yerleştiren yatay bir Jetpack Compose kapsayıcısıdır.
  • horizontalArrangement, öğelerin yatay dağılımını kontrol eder: eşit şekilde, aralıklı olarak veya kapsayıcının sonunda.
  • verticalAlignment, öğeleri kapsayıcıya göre dikey olarak hizalar: üst, orta veya alt.
  • Modifier.weight, belirtilen ağırlıkla orantılı olarak Row öğeleri arasında kullanılabilir alanı dağıtmayı sağlar.
  • Row, mobil arayüzlerde düğme satırları, simge listeleri, giriş alanları ve yatay araç çubukları oluşturmak için etkilidir.

Jetpack Compose'ta Row Nedir

Row, alt öğeleri yatay bir sıraya yerleştiren bir composable işlevidir. Compose düzen hiyerarşisinde Row, Column ve Box ile birlikte temel bir kapsayıcı konumundadır.

Row, boyut belirtmeyi gerektirmez — içeriğine göre otomatik olarak ayarlanır. Row'un genişliği, Modifier.fillMaxWidth veya sabit bir boyut belirtilmediği sürece dolgu dahil alt öğelerin genişliklerinin toplamına eşittir.

Row'un alt öğeleri, kapsayıcı içindeki konumlarını etkileyen kendi değiştiricilerine sahip olabilir. Örneğin, Modifier.weight, öğelerin kullanılabilir alanın orantılı bir bölümünü kaplamasına izin verir.

Android Developers Blog, 2024'e göre Row, alt öğeleri sırayla işler ve Compose ölçüm kurallarına göre boyutlarını hesaplar: önce weight'siz öğeler ölçülür, ardından kalan alan weight'li öğeler arasında dağıtılır.

Row Sözdizimi ve Temel İmza

Row'un temel imzası modifier parametresini, horizontalArrangement ve verticalAlignment'ı içerir. Tüm alt öğeler, son içerik lambda bloğunda iletilir.

kotlin
@Composable
fun RowExample() {
    Row(
        modifier = Modifier.fillMaxWidth().padding(16.dp),
        horizontalArrangement = Arrangement.SpaceEvenly,
        verticalAlignment = Alignment.CenterVertically
    ) {
        Text(text = "Bir")
        Text(text = "İki")
        Text(text = "Üç")
    }
}

Row Özellikleri: horizontalArrangement ve verticalAlignment

horizontalArrangement parametresi, Row içinde alt öğelerin yatay eksen boyunca nasıl dağıtılacağını belirler. Arrangement sınıfından Start, End, Center, SpaceBetween, SpaceAround ve SpaceEvenly değerleri mevcuttur.

Arrangement.Start öğeleri kapsayıcının başına, Arrangement.End — sonuna ve Arrangement.Center — ortasına yerleştirir. Bu değerler, CSS Flexbox'daki justify-content özelliğine benzer şekilde çalışır.

Arrangement.SpaceBetween, ilk öğeyi başa, son öğeyi sona ve kalanları aralarında eşit boşluklarla olacak şekilde eşit olarak dağıtır. Material Design Guidelines, 2025'e göre SpaceBetween, araç çubukları ve gezinme satırları için idealdir.

verticalAlignment parametresi öğeleri dikey olarak hizalar. Alignment.Top, Alignment.CenterVertically ve Alignment.Bottom değerleri mevcuttur. Bu özellik, Row öğelerinin farklı yüksekliklere sahip olduğunda — örneğin, çok satırlı metnin yanındaki bir simge — kullanışlıdır.

Arrangement Değerleri Tablosu

DeğerAçıklamaKullanım
StartÖğeler Row'un başına itilirSola hizalanmış satırlar
CenterÖğeler kapsayıcıda ortalanırYatay menüler, başlıklar
SpaceBetweenİlk başta son sonda olacak şekilde eşitAraç çubukları, gezinme
SpaceEvenlyÖğeler ve kenarlar arasında eşit boşlukDüğme satırları, tek tip ızgaralar
SpaceAroundÖğeler arasında eşit boşluk, kenarlarda yarım boşlukAtlı karıncalar, simge galerileri

Modifier.weight ile Alan Dağılımı

Modifier.weight, yalnızca Row ve Column içinde kullanılabilen ve belirtilen değerle orantılı olarak alt öğeler arasında kullanılabilir alanı dağıtan bir değiştiricidir. Bir öğenin ağırlığı 1.0f ve diğerinin 2.0f ise, ikinci öğe iki kat daha fazla alan kaplar.

Weight'siz öğeler, içerikleri için gereken alanı kaplar. Kalan alan, weight'li öğeler arasında ağırlıklarıyla orantılı olarak dağıtılır. Bu davranış, CSS Flexbox'daki flex-grow özelliğine benzer.

Android Developer Documentation, 2025'e göre weight, yalnızca Row, Column ve BoxWithConstraints içinde çalışır. Row'da weight kullanılırken, tüm alt öğeler iki geçişte ölçülür: önce weight'siz öğeler, ardından weight'li öğeler.

kotlin
@Composable
fun WeightExample() {
    Row(
        modifier = Modifier.fillMaxWidth(),
        horizontalArrangement = Arrangement.Start
    ) {
        Text(
            text = "Sol",
            modifier = Modifier.weight(1.0f)
        )
        Text(text = "Sağ")
    }
}

Row ile Kod Örnekleri

İlk örnek, bir simge ve metinle Row gösterir — kişi listesi veya ayarlar için tipik bir senaryo. Icon ve Text, verticalAlignment ortalanmış olarak Row içine sarılır.

kotlin
@Composable
fun IconWithText() {
    Row(
        verticalAlignment = Alignment.CenterVertically,
        modifier = Modifier.padding(8.dp)
    ) {
        Icon(
            imageVector = Icons.Default.Favorite,
            contentDescription = "Favorite"
        )
        Spacer(modifier = Modifier.width(8.dp))
        Text(text = "Favorilere ekle")
    }
}

İkinci örnek, düğmeler ve eşit dağılımla Row gösterir. SpaceEvenly, tüm düğmeler ve kapsayıcının kenarları arasında eşit boşluk sağlar.

kotlin
@Composable
fun ButtonRow() {
    Row(
        modifier = Modifier.fillMaxWidth().padding(16.dp),
        horizontalArrangement = Arrangement.SpaceEvenly
    ) {
        Button(onClick = {}) { Text("İptal") }
        Button(onClick = {}) { Text("Kaydet") }
    }
}

Üçüncü örnek — bir derecelendirme görüntülemek için Card içinde Row. Modifier.weight ile iç içe bir Row, derecelendirme yıldızının ve sayısal değerin sabit alan kaplamasını sağlar.

kotlin
@Composable
fun RatingRow(rating: Float) {
    Row(
        verticalAlignment = Alignment.CenterVertically
    ) {
        Text(
            text = "Değerlendirme:",
            modifier = Modifier.weight(1.0f)
        )
        Text(text = "$rating / 5.0")
    }
}

Uyarlanabilir Düzende Row Özellikleri

Row, uyarlanabilir düzende genişlik kontrolü gerektirir. Row içeriği mevcut ekran genişliğini aşarsa, öğeler kapsayıcı sınırlarının dışına taşabilir. Bunu önlemek için Modifier.horizontalScroll kullanın veya Column'a geçin.

Row'u Modifier.weight ile birleştirirken, üst Row için fillMaxWidth ayarlamak önemlidir — aksi takdirde weight var olmayan alanı dağıtır. Material Design Guidelines, 2025'e göre, fillMaxWidth olmadan weight'li Row geçersiz bir yapılandırma olarak kabul edilir.

Uyarlanabilir arayüzler için Row'u Box ile birleştirmeniz veya farklı ekran boyutlarında otomatik öğe dağılımı için Arrangement.SpaceBetween kullanmanız önerilir. Bu, medya sorguları olmadan esneklik sağlar.

  • Modifier.horizontalScroll — Row taştığında kaydırma ekler
  • Modifier.weight — alanı orantılı olarak dağıtır
  • Arrangement.SpaceBetween — kenar sabitlemeli uyarlanabilir dağılım

Sık Sorulan Sorular

Row, Jetpack Compose'ta Column'dan nasıl farklıdır?

Row öğeleri yatay olarak (soldan sağa) yerleştirirken, Column onları dikey olarak (yukarıdan aşağıya) yerleştirir. Row, eski View yaklaşımından yatay yönelimli LinearLayout'un yerini alır ve Column, dikey LinearLayout'un yerini alır.

Kaydırılabilir bir Row nasıl yapılır?

Row'a Modifier.horizontalScroll değiştiricisini ekleyin. Yavaş yüklemeli büyük listeler için LazyRow kullanın — yalnızca görünür öğeleri işler ve kaydırma sırasında onları geri dönüştürür.

Row başka bir Row içine yerleştirilebilir mi?

Evet, Row başka bir Row, Column veya Box içine yerleştirilebilir. İç içe yerleştirirken, iç Row'un genişliğini üst kapsayıcıdan alacağını unutmayın ve gerekirse her seviye için fillMaxWidth ayarlayın.

Modifier.weight Row'da ne yapar?

Modifier.weight, Row'daki kalan alanı belirtilen ağırlıkla orantılı olarak alt öğeler arasında dağıtır. Ağırlığı 2.0f olan bir öğe, ağırlığı 1.0f olan bir öğenin iki katı genişliğinde olur. Weight yalnızca Row ve Column içinde çalışır.

Row öğeleri dikey olarak nasıl ortalanır?

Row oluştururken verticalAlignment = Alignment.CenterVertically parametresini kullanın. Bu, yüksekliklerinden bağımsız olarak tüm alt öğeleri dikey eksen boyunca hizalar.

Özet

  • Row, özelleştirilebilir düzen ve hizalama ile öğeleri soldan sağa bir satıra yerleştirmek için yatay bir Compose kapsayıcısıdır.
  • horizontalArrangement, öğelerin yatay dağılımını kontrol eder: Start, Center, End, SpaceBetween, SpaceEvenly ve SpaceAround.
  • verticalAlignment, öğeleri Alignment.Top, CenterVertically veya Bottom aracılığıyla dikey olarak hizalar.
  • Modifier.weight, CSS'deki flex-grow'a benzer şekilde, belirtilen ağırlıkla orantılı olarak öğeler arasında boş alanı dağıtır.
  • Row, iç içe yerleştirmeyi, Modifier.horizontalScroll ile kaydırmayı ve diğer Compose kapsayıcılarıyla çalışmayı destekler.
  • Uyarlanabilir düzende, weight'li Row için Modifier.fillMaxWidth ayarlamak önemlidir, aksi takdirde öğeler alanı doğru şekilde dağıtmaz.
  • Çok sayıda öğe içeren yatay listeler için en iyi performans için Row yerine LazyRow kullanın.

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun