Header Ads

Header ADS

Grid Layout

🧱 GridLayout কী

👉 GridLayout হলো এমন একটি ViewGroup
যা তার child views গুলোকে সারি (rows) এবং কলাম (columns) আকারে সাজায়।

তুমি এটা এমনভাবে ভাবতে পারো:

পুরো স্ক্রিন একটা গ্রিডের মতো,
যেখানে প্রত্যেকটা ছোট ঘর (cell) এর মধ্যে তুমি যেকোনো View রাখতে পারো — যেমন Button, TextView ইত্যাদি।


🎨 GridLayout-এর মূল বৈশিষ্ট্য

বৈশিষ্ট্য ব্যাখ্যা
গ্রিড ভিত্তিক লেআউট UI কে সারি ও কলামে ভাগ করে
Child view গুলো নির্দিষ্ট cell-এ বসানো হয় row ও column দিয়ে অবস্থান নির্ধারণ করা হয়
Child view একাধিক cell জুড়ে থাকতে পারে rowSpancolumnSpan ব্যবহার করে
Orientation থাকতে পারে Horizontal বা Vertical
Flexibility বেশি TableLayout এর চেয়ে বেশি control দেয়

⚙️ কাজের ধরন

GridLayout মূলত একটা "invisible grid" তৈরি করে —
যেখানে "infinitely thin lines" দিয়ে জায়গাগুলোকে cells হিসেবে ভাগ করা হয়।

তুমি প্রত্যেকটা View কোথায় থাকবে সেটা row ও column দিয়ে বলতে পারো।


🧩 যদি row/column না দাও তাহলে কী হয়?

যদি তুমি কোনো child View-এর জন্য
row ও column নির্দিষ্ট না করো,
তাহলে GridLayout নিজেই স্বয়ংক্রিয়ভাবে সেটার অবস্থান ঠিক করে নেয়।

এটা নির্ভর করে তিনটি property-এর ওপর 👇

Property কাজ
orientation horizontal হলে grid বাম-থেকে-ডানে ভরে, vertical হলে উপর-থেকে-নিচে
rowCount মোট কয়টি সারি থাকবে
columnCount মোট কয়টি কলাম থাকবে

📄 একটি উদাহরণ

<GridLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:rowCount="2"
    android:columnCount="3"
    android:orientation="horizontal"
    android:padding="10dp">

    <Button
        android:text="1" />

    <Button
        android:text="2" />

    <Button
        android:text="3" />

    <Button
        android:text="4" />

    <Button
        android:text="5" />

    <Button
        android:text="6" />

</GridLayout>

🔍 ব্যাখ্যা:

  1. এখানে GridLayout-এর rowCount = 2, columnCount = 3

  2. orientation হলো horizontal

  3. তাই GridLayout নিজেই child গুলিকে স্বয়ংক্রিয়ভাবে cell-এ সাজাবে 👇

1 | 2 | 3
---------
4 | 5 | 6

তুমি কোনো row/column index দাওনি — GridLayout নিজেই সাজিয়ে দিয়েছে।


🧮 নির্দিষ্ট cell-এ বসাতে চাইলে

যদি তুমি চাও কোনো View নির্দিষ্ট cell-এ যাক, তাহলে
layout_row এবং layout_column attribute ব্যবহার করো 👇

<Button
    android:text="Click Me"
    android:layout_row="1"
    android:layout_column="2" />

👉 এই Button যাবে দ্বিতীয় row, তৃতীয় column-এ (count শুরু হয় 0 থেকে)।


🧠 একাধিক cell জুড়ে View রাখতে চাইলে

তুমি layout_rowSpan বা layout_columnSpan ব্যবহার করতে পারো 👇

<Button
    android:text="Big Button"
    android:layout_rowSpan="2"
    android:layout_columnSpan="2" />

👉 এই বাটন ২টা row এবং ২টা column জুড়ে থাকবে।


🧾 GridLayout vs TableLayout (তুলনা)

বিষয় GridLayout TableLayout
Flexibility বেশি (exact control) কম
View positioning নির্দিষ্ট row/column দেওয়া যায় স্বয়ংক্রিয়ভাবে সাজায়
Spanning (merge) সহজে করা যায় layout_span দিয়ে করতে হয়
Performance ভালো তুলনামূলক ধীর
Modern UI এর জন্য উপযোগী

🎯 সংক্ষেপে মনে রাখো

বিষয় মানে
GridLayout স্ক্রিনকে গ্রিড আকারে ভাগ করে
Cell প্রতিটি ঘর যেখানে View বসে
rowCount / columnCount কত সারি ও কলাম থাকবে
layout_row / layout_column নির্দিষ্ট cell নির্ধারণ
rowSpan / columnSpan একাধিক cell জুড়ে রাখা
orientation বাম-থেকে-ডানে বা উপর-থেকে-নিচে সাজানো


Powered by Blogger.