Jetpack Compose-এ Row: এটি কী, composable বৈশিষ্ট্য এবং কীভাবে কাজ করে

লেখক: IT Sectr প্রকাশিত: 2026-06-28 পড়ার সময়: 10 মিনিট

Row হল Jetpack Compose-এ একটি composable ফাংশন যা চাইল্ড এলিমেন্টগুলিকে একটি অনুভূমিক সারিতে রাখে। Column-এর বিপরীতে, Row এলিমেন্টগুলিকে বাম থেকে ডানে সাজায় এবং horizontalArrangement এবং verticalAlignment প্যারামিটারের মাধ্যমে লেআউট কনফিগারেশন সমর্থন করে। Google Android Documentation, 2025 অনুসারে, Row হল Column এবং Box-এর পাশাপাশি তিনটি মৌলিক Compose ধারকের মধ্যে একটি এবং অনুভূমিক ইন্টারফেস কাঠামো তৈরি করতে ব্যবহৃত হয়: বাটন সারি, ইনপুট ক্ষেত্র এবং টেক্সট সহ আইকন।

মূল পয়েন্ট

  • Row হল একটি অনুভূমিক Jetpack Compose ধারক যা চাইল্ড composable এলিমেন্টগুলিকে বাম থেকে ডানে একটি একক লাইনে রাখে।
  • horizontalArrangement অনুভূমিকভাবে উপাদানের বিতরণ নিয়ন্ত্রণ করে: সমানভাবে, ফাঁকা সহ, বা ধারকের শেষে।
  • verticalAlignment ধারকের সাপেক্ষে উপাদানগুলিকে উল্লম্বভাবে সারিবদ্ধ করে: উপরে, মাঝখানে বা নীচে।
  • Modifier.weight নির্দিষ্ট ওজনের অনুপাতে Row উপাদানের মধ্যে উপলব্ধ স্থান বিতরণ করতে দেয়।
  • Row মোবাইল ইন্টারফেসে বাটন সারি, আইকন তালিকা, ইনপুট ক্ষেত্র এবং অনুভূমিক টুলবার তৈরির জন্য কার্যকর।

Jetpack Compose-এ Row কী

Row একটি composable ফাংশন যা চাইল্ড এলিমেন্টগুলিকে একটি অনুভূমিক ক্রমানুসারে রাখে। Compose লেআউট শ্রেণিবিন্যাসে, Row Column এবং Box-এর পাশাপাশি একটি মৌলিক ধারকের অবস্থান দখল করে।

Row-এর মাত্রা নির্দিষ্ট করার প্রয়োজন নেই — এটি স্বয়ংক্রিয়ভাবে তার বিষয়বস্তুর সাথে সামঞ্জস্য করে। Row-এর প্রস্থ Modifier.fillMaxWidth বা একটি নির্দিষ্ট আকার উল্লেখ না করা পর্যন্ত প্যাডিং সহ চাইল্ড এলিমেন্টের প্রস্থের যোগফলের সমান।

Row-এর চাইল্ড এলিমেন্টগুলির নিজস্ব মডিফায়ার থাকতে পারে যা ধারকের মধ্যে তাদের অবস্থানকে প্রভাবিত করে। উদাহরণস্বরূপ, Modifier.weight এলিমেন্টগুলিকে উপলব্ধ স্থানের একটি আনুপাতিক অংশ দখল করতে দেয়।

Android Developers Blog, 2024 অনুসারে, Row চাইল্ড এলিমেন্টগুলিকে ক্রমানুসারে প্রক্রিয়া করে, Compose পরিমাপের নিয়মের উপর ভিত্তি করে তাদের আকার গণনা করে: প্রথমে weight ছাড়া এলিমেন্টগুলি পরিমাপ করা হয়, তারপর অবশিষ্ট স্থান weight সহ এলিমেন্টগুলির মধ্যে বিতরণ করা হয়।

Row সিনট্যাক্স এবং মৌলিক স্বাক্ষর

Row-এর মৌলিক স্বাক্ষরে modifier প্যারামিটার, horizontalArrangement এবং verticalAlignment অন্তর্ভুক্ত রয়েছে। সমস্ত চাইল্ড এলিমেন্ট চূড়ান্ত কন্টেন্ট ল্যাম্বডা ব্লকে পাস করা হয়।

kotlin
@Composable
fun RowExample() {
    Row(
        modifier = Modifier.fillMaxWidth().padding(16.dp),
        horizontalArrangement = Arrangement.SpaceEvenly,
        verticalAlignment = Alignment.CenterVertically
    ) {
        Text(text = "এক")
        Text(text = "দুই")
        Text(text = "তিন")
    }
}

Row-এর বৈশিষ্ট্য: horizontalArrangement এবং verticalAlignment

horizontalArrangement প্যারামিটার নির্ধারণ করে কিভাবে Row-এর ভিতরে অনুভূমিক অক্ষ বরাবর চাইল্ড এলিমেন্টগুলি বিতরণ করা হয়। Arrangement ক্লাস থেকে Start, End, Center, SpaceBetween, SpaceAround এবং SpaceEvenly উপলব্ধ মান।

Arrangement.Start এলিমেন্টগুলিকে ধারকের শুরুতে রাখে, Arrangement.End — শেষে, এবং Arrangement.Center — মাঝখানে। এই মানগুলি CSS Flexbox-এ justify-content প্রপার্টির মতো কাজ করে।

Arrangement.SpaceBetween এলিমেন্টগুলিকে সমানভাবে বিতরণ করে, প্রথম এলিমেন্টটি শুরুতে, শেষটি শেষে এবং বাকিগুলির মধ্যে সমান ফাঁকা রেখে। Material Design Guidelines, 2025 অনুসারে, SpaceBetween টুলবার এবং নেভিগেশন সারির জন্য সর্বোত্তম।

verticalAlignment প্যারামিটার এলিমেন্টগুলিকে উল্লম্বভাবে সারিবদ্ধ করে। Alignment.Top, Alignment.CenterVertically এবং Alignment.Bottom উপলব্ধ মান। এই বৈশিষ্ট্যটি উপযোগী যখন Row এলিমেন্টগুলির বিভিন্ন উচ্চতা থাকে — উদাহরণস্বরূপ, বহু-লাইন টেক্সটের পাশে একটি আইকন।

Arrangement মানের সারণী

মানবর্ণনাব্যবহার
Startএলিমেন্টগুলি Row-এর শুরুতে ঠেলে দেওয়া হয়বাম-সারিবদ্ধ সারি
Centerএলিমেন্টগুলি ধারকে কেন্দ্রীভূতঅনুভূমিক মেনু, হেডার
SpaceBetweenপ্রথমে শুরুতে এবং শেষে শেষে সমানভাবেটুলবার, নেভিগেশন
SpaceEvenlyএলিমেন্ট এবং প্রান্তের মধ্যে সমান ফাঁকাবাটন সারি, অভিন্ন গ্রিড
SpaceAroundএলিমেন্টের মধ্যে সমান ফাঁকা, প্রান্তে অর্ধেক ফাঁকাক্যারোজেল, আইকন গ্যালারি

Modifier.weight-এর সাথে স্থান বিতরণ

Modifier.weight একটি মডিফায়ার যা শুধুমাত্র Row এবং Column-এর ভিতরে উপলব্ধ যা নির্দিষ্ট মানের অনুপাতে চাইল্ড এলিমেন্টের মধ্যে উপলব্ধ স্থান বিতরণ করে। যদি একটি এলিমেন্টের ওজন 1.0f হয় এবং অন্যটির 2.0f হয়, তবে দ্বিতীয় এলিমেন্টটি দ্বিগুণ স্থান নেবে।

weight ছাড়া এলিমেন্টগুলি তাদের বিষয়বস্তুর জন্য প্রয়োজনীয় স্থান দখল করে। অবশিষ্ট স্থান weight সহ এলিমেন্টগুলির মধ্যে তাদের ওজনের অনুপাতে বিতরণ করা হয়। এই আচরণ CSS Flexbox-এ flex-grow প্রপার্টির মতো।

Android Developer Documentation, 2025 অনুসারে, weight শুধুমাত্র Row, Column এবং BoxWithConstraints-এর ভিতরে কাজ করে। Row-এ weight ব্যবহার করার সময়, সমস্ত চাইল্ড এলিমেন্ট দুটি পাসে পরিমাপ করা হয়: প্রথমে weight ছাড়া এলিমেন্ট, তারপর weight সহ এলিমেন্ট।

kotlin
@Composable
fun WeightExample() {
    Row(
        modifier = Modifier.fillMaxWidth(),
        horizontalArrangement = Arrangement.Start
    ) {
        Text(
            text = "বাম",
            modifier = Modifier.weight(1.0f)
        )
        Text(text = "ডান")
    }
}

Row-এর সাথে কোড উদাহরণ

প্রথম উদাহরণটি একটি আইকন এবং টেক্সট সহ Row প্রদর্শন করে — পরিচিতি তালিকা বা সেটিংসের জন্য একটি সাধারণ দৃশ্যকল্প। Icon এবং Text কেন্দ্রে verticalAlignment সহ Row-এ মোড়ানো হয়।

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 = "পছন্দে যোগ করুন")
    }
}

দ্বিতীয় উদাহরণটি বাটন এবং সমান বিতরণ সহ Row দেখায়। SpaceEvenly সমস্ত বাটন এবং ধারকের প্রান্তের মধ্যে সমান ফাঁকা নিশ্চিত করে।

kotlin
@Composable
fun ButtonRow() {
    Row(
        modifier = Modifier.fillMaxWidth().padding(16.dp),
        horizontalArrangement = Arrangement.SpaceEvenly
    ) {
        Button(onClick = {}) { Text("বাতিল") }
        Button(onClick = {}) { Text("সংরক্ষণ") }
    }
}

তৃতীয় উদাহরণ — রেটিং প্রদর্শনের জন্য Card-এর ভিতরে Row। Modifier.weight সহ একটি নেস্টেড Row রেটিং স্টার এবং সংখ্যাসূচক মানকে নির্দিষ্ট স্থান দখল করতে দেয়।

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

অভিযোজিত লেআউটে Row-এর বৈশিষ্ট্য

Row-এর অভিযোজিত লেআউটে প্রস্থ নিয়ন্ত্রণের প্রয়োজন। যদি Row-এর বিষয়বস্তু উপলব্ধ স্ক্রিনের প্রস্থ অতিক্রম করে, তবে এলিমেন্টগুলি ধারকের সীমানা অতিক্রম করতে পারে। এটি প্রতিরোধ করতে, Modifier.horizontalScroll ব্যবহার করুন বা Column-এ স্যুইচ করুন।

Row-কে Modifier.weight-এর সাথে সংযুক্ত করার সময়, প্যারেন্ট Row-এর জন্য fillMaxWidth সেট করা গুরুত্বপূর্ণ — অন্যথায় weight অস্তিত্বহীন স্থান বিতরণ করবে। Material Design Guidelines, 2025 অনুসারে, fillMaxWidth ছাড়া weight সহ Row একটি অবৈধ কনফিগারেশন হিসাবে বিবেচিত হয়।

অভিযোজিত ইন্টারফেসের জন্য, Row-কে Box-এর সাথে সংযুক্ত করতে বা বিভিন্ন স্ক্রিন আকারে স্বয়ংক্রিয় এলিমেন্ট বিতরণের জন্য Arrangement.SpaceBetween ব্যবহার করার পরামর্শ দেওয়া হয়। এটি মিডিয়া কোয়েরি ছাড়াই নমনীয়তা প্রদান করে।

  • Modifier.horizontalScroll — Row ওভারফ্লো হলে স্ক্রলিং যোগ করে
  • Modifier.weight — আনুপাতিকভাবে স্থান বিতরণ করে
  • Arrangement.SpaceBetween — প্রান্তে ফিক্সিং সহ অভিযোজিত বিতরণ

সচরাচর জিজ্ঞাসা

Jetpack Compose-এ Row কীভাবে Column থেকে আলাদা?

Row এলিমেন্টগুলিকে অনুভূমিকভাবে (বাম থেকে ডানে) রাখে, যখন Column সেগুলিকে উল্লম্বভাবে (উপর থেকে নীচে) রাখে। Row পুরানো View পদ্ধতি থেকে অনুভূমিক ওরিয়েন্টেশন সহ LinearLayout প্রতিস্থাপন করে, এবং Column উল্লম্ব LinearLayout প্রতিস্থাপন করে।

কীভাবে একটি স্ক্রলযোগ্য Row তৈরি করবেন?

Row-এ Modifier.horizontalScroll মডিফায়ার যোগ করুন। বড় তালিকার জন্য লেজি লোডিং সহ, LazyRow ব্যবহার করুন — এটি শুধুমাত্র দৃশ্যমান এলিমেন্ট রেন্ডার করে এবং স্ক্রল করার সময় সেগুলি পুনর্ব্যবহার করে।

কি Row-কে অন্য Row-এর ভিতরে নেস্ট করা যায়?

হ্যাঁ, Row-কে অন্য Row, Column বা Box-এর ভিতরে নেস্ট করা যেতে পারে। নেস্টিং করার সময়, মনে রাখবেন যে ভিতরের Row প্যারেন্ট ধারক থেকে তার প্রস্থ পাবে এবং প্রয়োজনে প্রতিটি স্তরের জন্য fillMaxWidth সেট করুন।

Row-এ Modifier.weight কী করে?

Modifier.weight নির্দিষ্ট ওজনের অনুপাতে Row-এ অবশিষ্ট স্থান চাইল্ড এলিমেন্টের মধ্যে বিতরণ করে। 2.0f ওজনের একটি এলিমেন্ট 1.0f ওজনের এলিমেন্টের তুলনায় দ্বিগুণ চওড়া হবে। Weight শুধুমাত্র Row এবং Column-এর ভিতরে কাজ করে।

কীভাবে উল্লম্বভাবে Row এলিমেন্টগুলিকে কেন্দ্র করবেন?

Row তৈরি করার সময় verticalAlignment = Alignment.CenterVertically প্যারামিটার ব্যবহার করুন। এটি তাদের উচ্চতা নির্বিশেষে সমস্ত চাইল্ড এলিমেন্টকে উল্লম্ব অক্ষ বরাবর সারিবদ্ধ করবে।

সারসংক্ষেপ

  • Row হল একটি অনুভূমিক Compose ধারক যা কাস্টমাইজযোগ্য বিন্যাস এবং সারিবদ্ধকরণ সহ বাম থেকে ডানে একটি সারিতে উপাদান রাখার জন্য।
  • horizontalArrangement উপাদানের অনুভূমিক বিতরণ নিয়ন্ত্রণ করে: Start, Center, End, SpaceBetween, SpaceEvenly এবং SpaceAround।
  • verticalAlignment Alignment.Top, CenterVertically বা Bottom-এর মাধ্যমে উপাদানগুলিকে উল্লম্বভাবে সারিবদ্ধ করে।
  • Modifier.weight CSS-এ flex-grow-এর মতো নির্দিষ্ট ওজনের অনুপাতে উপাদানের মধ্যে খালি স্থান বিতরণ করে।
  • Row নেস্টিং, Modifier.horizontalScroll-এর মাধ্যমে স্ক্রলিং এবং অন্যান্য Compose ধারকের সাথে কাজ সমর্থন করে।
  • অভিযোজিত লেআউটে, weight সহ Row-এর জন্য Modifier.fillMaxWidth সেট করা গুরুত্বপূর্ণ, অন্যথায় উপাদানগুলি সঠিকভাবে স্থান বিতরণ করবে না।
  • অনেক উপাদান সহ অনুভূমিক তালিকার জন্য, সর্বোত্তম পারফরম্যান্সের জন্য Row-এর পরিবর্তে LazyRow ব্যবহার করুন।

আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব

IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।

প্রকল্প নিয়ে আলোচনা করুন

আরও পড়ুন