Row Jetpack Compose-da: bu nədir, composable xüsusiyyətləri və necə işləyir

Müəllif: IT Sectr Dərc olunub: 2026-06-28 Oxuma vaxtı: 10 dəq

Row — Jetpack Compose-da uşaq elementləri üfüqi cərgədə yerləşdirmək üçün composable funksiyadır. Column-dan fərqli olaraq, Row elementləri soldan sağa düzür və yerləşməni horizontalArrangement və verticalAlignment parametrləri vasitəsilə konfiqurasiya etməyə imkan verir. Google Android Documentation, 2025-ə görə, Row Column və Box ilə yanaşı Compose-un üç əsas konteynerindən biridir və interfeysin üfüqi strukturlarını yaratmaq üçün istifadə olunur: düymə sətirləri, daxiletmə sahələri və mətnli ikonlar.

Əsas məqamlar

  • Row — uşaq komponentləri bir xətt üzrə soldan sağa yerləşdirən Jetpack Compose üfüqi konteyneri.
  • horizontalArrangement elementlərin üfüqi istiqamətdə paylanmasını idarə edir: bərabər şəkildə, boşluqlarla və ya konteynerin sonunda.
  • verticalAlignment elementləri şaquli olaraq konteynerə nisbətən düzləndirir: yuxarı kənar, mərkəz və ya aşağı kənar.
  • Modifier.weight Row elementləri arasında mövcud yeri göstərilən çəkiyə uyğun olaraq bölüşdürməyə imkan verir.
  • Row mobil interfeyslərdə düymə sətirləri, ikon siyahıları, daxiletmə sahələri və üfüqi alət panelləri yaratmaq üçün effektivdir.

Jetpack Compose-da Row nədir

Row — uşaq elementlərini üfüqi ardıcıllıqla yerləşdirən composable funksiyadır. Compose layoutlarının iyerarxiyasında Row Column və Box ilə yanaşı əsas konteyner yerini tutur.

Row ölçülərin göstərilməsini tələb etmir — o avtomatik olaraq məzmuna uyğunlaşır. Row-un eni, Modifier.fillMaxWidth və ya sabit ölçü təyin edilməyibsə, boşluqlar nəzərə alınmaqla uşaq elementlərinin enlərinin cəminə bərabərdir.

Row-un uşaq elementləri konteyner daxilində öz mövqelərinə təsir edən öz modifikatorlarına malik ola bilər. Məsələn, Modifier.weight elementlərə mövcud yerin mütənasib hissəsini tutmağa imkan verir.

Android Developers Blog, 2024-ə görə, Row uşaq elementlərini ardıcıl olaraq emal edir, onların ölçülərini Compose ölçmə qaydaları əsasında hesablayır: əvvəlcə weightsiz elementlər ölçülür, sonra qalan yer weight olan elementlər arasında bölüşdürülür.

Row-un sintaksisi və əsas imzası

Row-un əsas imzası modifier, horizontalArrangement və verticalAlignment parametrlərini əhatə edir. Bütün uşaq elementləri son lambda content blokunda ötürülür.

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-un xüsusiyyətləri: horizontalArrangement və verticalAlignment

horizontalArrangement parametri uşaq elementlərinin Row daxilində üfüqi ox boyunca necə paylanacağını müəyyən edir. Arrangement sinfindən Start, End, Center, SpaceBetween, SpaceAround və SpaceEvenly dəyərləri mövcuddur.

Arrangement.Start elementləri konteynerin əvvəlində, Arrangement.End — sonunda, Arrangement.Center isə mərkəzdə yerləşdirir. Bu dəyərlər CSS Flexbox-da justify-content xüsusiyyətinə bənzər şəkildə işləyir.

Arrangement.SpaceBetween elementləri bərabər şəkildə paylayır, birinci elementi əvvəldə, sonuncunu sondə yerləşdirir, qalanları isə aralarında bərabər boşluqlarla düzülür. Material Design Guidelines, 2025-ə görə, SpaceBetween alət panelləri və naviqasiya sətirləri üçün optimaldır.

verticalAlignment parametri elementləri şaquli olaraq düzləndirir. Alignment.Top, Alignment.CenterVertically və Alignment.Bottom dəyərləri mövcuddur. Bu xüsusiyyət Row elementləri müxtəlif hündürlükdə olduqda faydalıdır — məsələn, çoxsətirli mətnin yanında ikon.

Arrangement dəyərlər cədvəli

DəyərTəsvirTətbiq
StartElementlər Row-un əvvəlinə sıxışdırılıbSola düzləndirilmiş sətirlər
CenterElementlər konteynerin mərkəzindəÜfüqi menyular, başlıqlar
SpaceBetweenBərabər, birinci əvvəldə, sonuncu sondəAlət panelləri, naviqasiya
SpaceEvenlyElementlər arasında və kənarlarda bərabər boşluqlarDüymə sətirləri, bərabər şəbəkələr
SpaceAroundElementlər arasında bərabər boşluqlar, kənarlarda yarım boşluqKarusellər, ikon qalereyaları

Modifier.weight ilə yerin bölüşdürülməsi

Modifier.weight — yalnız Row və Column daxilində mövcud olan modifikatordur və mövcud yeri uşaq elementləri arasında göstərilən dəyərə mütənasib olaraq bölüşdürür. Bir elementə 1.0f çəki, digərinə 2.0f təyin edilərsə, ikinci element iki dəfə çox yer tutar.

Weight göstərilməyən elementlər məzmunları üçün lazım olan qədər yer tutur. Qalan yer weight olan elementlər arasında onların çəkisinə mütənasib olaraq bölüşdürülür. Bu davranış CSS Flexbox-dakı flex-grow xüsusiyyətinə analojidir.

Android Developer Documentation, 2025-ə görə, weight yalnız Row, Column və BoxWithConstraints daxilində işləyir. Row-da weight istifadə edərkən bütün uşaq elementləri iki keçiddə ölçülür: əvvəlcə weightsiz elementlər, sonra weight olan elementlər.

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

Row ilə kod nümunələri

Birinci nümunə ikon və mətn ilə Row-u göstərir — kontaktlar siyahısı və ya parametrlər üçün tipik ssenari. Icon və Text mərkəzləşdirilmiş verticalAlignment ilə Row-a bükülüb.

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 = "Sevimlilərə əlavə et")
    }
}

İkinci nümunə düymələr və bərabər paylanma ilə Row-u göstərir. SpaceEvenly bütün düymələr və konteyner kənarları arasında eyni boşluqları təmin edir.

kotlin
@Composable
fun ButtonRow() {
    Row(
        modifier = Modifier.fillMaxWidth().padding(16.dp),
        horizontalArrangement = Arrangement.SpaceEvenly
    ) {
        Button(onClick = {}) { Text("Ləğv et") }
        Button(onClick = {}) { Text("Yadda saxla") }
    }
}

Üçüncü nümunə — reytinq göstərmək üçün Card daxilində Row. Modifier.weight ilə iç-içə Row reytinq ulduzuna və ədədi dəyərə sabit yer tutmağa imkan verir.

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

Adaptiv düzəndə Row-un xüsusiyyətləri

Row adaptiv düzəndə enə nəzarət tələb edir. Row-un məzmunu ekranın mövcud enini aşarsa, elementlər konteynerin sərhədlərindən kənara çıxa bilər. Bunun qarşısını almaq üçün Modifier.horizontalScroll və ya Column-a keçiddən istifadə edin.

Row-u Modifier.weight ilə birləşdirərkən ana Row üçün fillMaxWidth təyin etmək vacibdir — əks halda weight mövcud olmayan yeri bölüşdürəcək. Material Design Guidelines, 2025-ə görə, fillMaxWidth olmadan weight ilə Row səhv konfiqurasiya hesab olunur.

Adaptiv interfeyslər üçün Row-u Box ilə birləşdirmək və ya müxtəlif ekran ölçülərində elementlərin avtomatik paylanması üçün Arrangement.SpaceBetween istifadə etmək tövsiyə olunur. Bu, media sorğuları olmadan çeviklik təmin edir.

  • Modifier.horizontalScroll — Row daşdıqda sürüşdürmə əlavə edir
  • Modifier.weight — yeri mütənasib olaraq bölüşdürür
  • Arrangement.SpaceBetween — kənarlarda fiksasiya ilə adaptiv paylanma

Tez-tez verilən suallar

Row Jetpack Compose-da Column-dan nə ilə fərqlənir?

Row elementləri üfüqi (soldan sağa), Column isə şaquli (yuxarıdan aşağıya) yerləşdirir. Row köhnə View yanaşmasında Horizontal LinearLayout-u, Column isə şaquli LinearLayout-u əvəz edir.

Row-u sürüşdürmə ilə necə etmək olar?

Row-a Modifier.horizontalScroll modifikatorunu əlavə edin. Çox elementli böyük siyahılar üçün LazyRow istifadə edin — o, yalnız görünən elementləri göstərir və sürüşdürmə zamanı onları təkrar istifadə edir.

Row-u başqa Row-un içərisinə yerləşdirmək olar?

Bəli, Row başqa Row, Column və ya Box daxilinə yerləşdirilə bilər. Yerləşdirərkən nəzərə alın ki, daxili Row enini ana konteynerdən alır və lazım olduqda hər səviyyə üçün fillMaxWidth təyin edin.

Row-da Modifier.weight nə edir?

Modifier.weight Row-da qalan yeri uşaq elementləri arasında göstərilən çəkiyə mütənasib olaraq bölüşdürür. Çəkisi 2.0f olan element çəkisi 1.0f olan elementdən iki dəfə geniş olar. Weight yalnız Row və Column daxilində işləyir.

Row elementlərini şaquli olaraq mərkəzə necə düzləndirmək olar?

Row yaradarkən verticalAlignment = Alignment.CenterVertically parametrindən istifadə edin. Bu, bütün uşaq elementlərini hündürlüklərindən asılı olmayaraq şaquli ox boyunca düzləndirəcək.

Xülasə

  • Row — elementləri soldan sağa sətirdə yerləşdirmək üçün Compose üfüqi konteyneri, konfiqurasiya olunan yerləşmə və düzləndirmə ilə.
  • horizontalArrangement elementlərin üfüqi paylanmasını idarə edir: Start, Center, End, SpaceBetween, SpaceEvenly və SpaceAround.
  • verticalAlignment elementləri şaquli olaraq Alignment.Top, CenterVertically və ya Bottom vasitəsilə düzləndirir.
  • Modifier.weight sərbəst yeri elementlər arasında göstərilən çəkiyə mütənasib bölüşdürür, CSS-də flex-grow-a analoji.
  • Row iç-içə yerləşdirmə, Modifier.horizontalScroll ilə sürüşdürmə və digər Compose konteynerləri ilə işi dəstəkləyir.
  • Adaptiv düzəndə weight olan Row üçün Modifier.fillMaxWidth təyin etmək vacibdir, əks halda elementlər yeri düzgün bölüşdürməyəcək.
  • Çox sayda elementi olan üfüqi siyahılar üçün optimal performans üçün Row əvəzinə LazyRow istifadə edin.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun