একটি লিনিয়ার লেআউট তৈরি করুন

কম্পোজ পদ্ধতিটি চেষ্টা করুন
অ্যান্ড্রয়েডের জন্য Jetpack Compose হলো প্রস্তাবিত UI টুলকিট। Compose-এ কীভাবে লেআউট নিয়ে কাজ করতে হয় তা শিখুন।

LinearLayout হলো একটি ভিউ গ্রুপ যা এর সমস্ত চাইল্ডকে উল্লম্বভাবে বা অনুভূমিকভাবে একটি নির্দিষ্ট দিকে সারিবদ্ধ করে। আপনি android:orientation অ্যাট্রিবিউটের মাধ্যমে লেআউটের দিক নির্দিষ্ট করে দিতে পারেন।

একটি চিত্র যেখানে একটি বিন্যাসকে তিনটি উল্লম্ব খণ্ডে বিভক্ত দেখানো হয়েছে।
চিত্র ১. একটি LinearLayout যার তিনটি চাইল্ড লেআউট আনুভূমিকভাবে অবস্থিত।

একটি LinearLayout এর সমস্ত চাইল্ড একটির পর একটি সাজানো থাকে, তাই একটি ভার্টিকাল লিস্টের প্রতিটি সারিতে কেবল একটিই চাইল্ড থাকে, সেগুলো যত চওড়াই হোক না কেন। একটি হরাইজন্টাল লিস্ট কেবল এক সারি উঁচু হয় এবং এর উচ্চতা হয় সবচেয়ে লম্বা চাইল্ডটির উচ্চতার সাথে প্যাডিং যোগ করে। একটি LinearLayout চাইল্ডগুলোর মধ্যে মার্জিন এবং প্রতিটি চাইল্ডের গ্র্যাভিটি —অর্থাৎ ডান, কেন্দ্র বা বাম অ্যালাইনমেন্ট—মেনে চলে।

লেআউট ওজন

LinearLayout android:layout_weight অ্যাট্রিবিউটের মাধ্যমে প্রতিটি চাইল্ড ভিউকে একটি ওয়েট (weight) দেওয়া যায়। এই অ্যাট্রিবিউটটি স্ক্রিনে একটি ভিউ কতটা জায়গা দখল করবে, তার উপর ভিত্তি করে সেটির একটি "গুরুত্ব" নির্ধারণ করে। ওয়েটের মান বেশি হলে এটি প্যারেন্ট ভিউয়ের বাকি জায়গা পূরণ করার জন্য প্রসারিত হতে পারে। চাইল্ড ভিউগুলো একটি ওয়েটের মান নির্দিষ্ট করে দিতে পারে এবং ভিউ গ্রুপের বাকি জায়গা তাদের নির্ধারিত ওয়েটের উপর ভিত্তি করে চাইল্ড ভিউগুলোর মধ্যে আনুপাতিকভাবে ভাগ করে দেওয়া হয়। ডিফল্ট ওয়েট হলো শূন্য।

সমান বন্টন

একটি লিনিয়ার লেআউট তৈরি করতে, যেখানে প্রতিটি চাইল্ড স্ক্রিনে সমান জায়গা ব্যবহার করবে, ভার্টিকাল লেআউটের জন্য প্রতিটি ভিউ-এর android:layout_height "0dp" সেট করুন, অথবা হরাইজন্টাল লেআউটের জন্য প্রতিটি ভিউ-এর android:layout_width "0dp" সেট করুন। এরপর প্রতিটি ভিউ-এর android:layout_weight "1" সেট করুন।

অসম বন্টন

আপনি লিনিয়ার লেআউটও তৈরি করতে পারেন, যেখানে চাইল্ড এলিমেন্টগুলো স্ক্রিনে ভিন্ন ভিন্ন পরিমাণ জায়গা ব্যবহার করে। নিচের উদাহরণগুলো বিবেচনা করুন:

  • ধরা যাক, আপনার তিনটি টেক্সট ফিল্ড আছে: দুটির ওয়েট ভ্যালু ১ এবং তৃতীয়টির ডিফল্ট ওয়েট ভ্যালু ০। ০ ওয়েট ভ্যালুযুক্ত তৃতীয় টেক্সট ফিল্ডটি শুধুমাত্র তার কন্টেন্টের জন্য প্রয়োজনীয় জায়গা দখল করে। অন্য দুটি টেক্সট ফিল্ড, যেগুলোর ওয়েট ভ্যালু ১, তিনটি ফিল্ডের কন্টেন্ট পরিমাপ করার পর অবশিষ্ট স্থানটি পূরণ করার জন্য সমানভাবে প্রসারিত হয়।
  • এর পরিবর্তে যদি আপনার তিনটি টেক্সট ফিল্ড থাকে, যেখানে দুটির ওয়েট ভ্যালু ১ এবং তৃতীয়টির ওয়েট ২ হয়, তাহলে তিনটি ফিল্ডের বিষয়বস্তু পরিমাপ করার পর যে স্থান অবশিষ্ট থাকে, তা নিম্নোক্তভাবে বন্টন করা হয়: অর্ধেক ওয়েট ভ্যালু ২ যুক্ত ফিল্ডটিকে এবং বাকি অর্ধেক ওয়েট ভ্যালু ১ যুক্ত ফিল্ড দুটির মধ্যে সমানভাবে ভাগ করে দেওয়া হয়।

নিম্নলিখিত চিত্র এবং কোড স্নিপেটটি দেখায় যে একটি 'বার্তা পাঠান' অ্যাক্টিভিটিতে লেআউট ওয়েটগুলি কীভাবে কাজ করতে পারে। ' টু' ফিল্ড, 'সাবজেক্ট ' লাইন এবং 'সেন্ড ' বাটন প্রতিটি কেবল তাদের প্রয়োজনীয় উচ্চতাটুকু নেয়। বার্তা লেখার স্থানটি অ্যাক্টিভিটির বাকি উচ্চতাটুকু দখল করে।

একটি উল্লম্বভাবে সজ্জিত লিনিয়ার লেআউটে তিনটি এডিটটেক্সট এবং একটি বাটন দেখানো একটি ছবি।
চিত্র ২। একটি উল্লম্বভাবে সজ্জিত LinearLayout মধ্যে তিনটি টেক্সট ফিল্ড এবং একটি বাটন।
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:orientation="vertical" >
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/to" />
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/subject" />
    <EditText
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:gravity="top"
        android:hint="@string/message" />
    <Button
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_gravity="end"
        android:text="@string/send" />
</LinearLayout>

একটি LinearLayout এর প্রতিটি চাইল্ড ভিউয়ের জন্য উপলব্ধ অ্যাট্রিবিউটগুলো সম্পর্কে বিস্তারিত জানতে, LinearLayout.LayoutParams দেখুন।