রিলেটিভ লেআউট

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

RelativeLayout হল একটি ভিউ গ্রুপ যা আপেক্ষিক পজিশনে চাইল্ড ভিউ দেখায়। প্রতিটি ভিউয়ের পজিশন, সহোদর এলিমেন্টের (যেমন, অন্য ভিউয়ের বাঁদিকে বা নিচে) সাপেক্ষে অথবা প্যারেন্ট RelativeLayout এরিয়ার (যেমন, নিচে, বাঁদিকে বা কেন্দ্রে অ্যালাইন করা) সাপেক্ষে পজিশন হিসেবে নির্দিষ্ট করা যেতে পারে।

মনে রাখবেন: আরও ভালো পারফর্ম্যান্স ও টুলিং সহায়তার জন্য, আপনার পরিবর্তে ConstraintLayout-এর মাধ্যমে লেআউট তৈরি করা উচিত।

RelativeLayout হল ইউজার ইন্টারফেস ডিজাইন করার জন্য খুব শক্তিশালী ইউটিলিটি কারণ এটি নেস্টেড ভিউ গ্রুপ বাদ দিতে পারে এবং আপনার লেআউট হায়ারার্কি ফ্ল্যাট রাখতে পারে, যা পারফর্ম্যান্স উন্নত করে। আপনি যদি দেখেন যে একাধিক নেস্টেড LinearLayout গ্রুপ ব্যবহার করছেন, তাহলে আপনি হয়ত সেগুলিকে একটি RelativeLayout দিয়ে পাল্টে নিতে পারবেন।

পজিশনিং ভিউ

RelativeLayout চাইল্ড ভিউ, প্যারেন্ট ভিউ বা একে অপরের (আইডি দ্বারা নির্দিষ্ট করা) সাপেক্ষে নিজের পজিশন নির্দিষ্ট করতে দেয়। তাই আপনি ডানদিকের বর্ডার অনুযায়ী দুটি এলিমেন্ট অ্যালাইন করতে পারেন অথবা একটি এলিমেন্টের নিচে আরেকটি এলিমেন্ট রাখতে পারেন, স্ক্রিনের মাঝখানে, বাঁদিকে মাঝখানে এবং আরও অনেক কিছু। ডিফল্ট হিসেবে, সব চাইল্ড ভিউ লেআউটের উপরের বাঁদিকে ড্র করা হয়, তাই আপনাকে RelativeLayout.LayoutParams থেকে উপলভ্য বিভিন্ন লেআউট প্রপার্টি ব্যবহার করে প্রতিটি ভিউয়ের পজিশন অবশ্যই ডিফাইন করতে হবে।

RelativeLayout-এ ভিউয়ের জন্য উপলভ্য অনেক লেআউট প্রপার্টির মধ্যে এগুলি অন্তর্ভুক্ত:

android:layout_alignParentTop
যদি "true" হয়, তাহলে এই ভিউয়ের উপরের প্রান্তটি প্যারেন্টের উপরের প্রান্তের সাথে ম্যাচ করে।
android:layout_centerVertical
যদি "true" হয়, তাহলে এর পেরেন্টের মধ্যে এই চাইল্ডকে উল্লম্বভাবে সেন্টার করে।
android:layout_below
এই ভিউয়ের উপরের প্রান্তকে রিসোর্স আইডির মাধ্যমে নির্দিষ্ট করা ভিউয়ের নিচে পজিশন করে।
android:layout_toRightOf
এই ভিউয়ের বাঁদিকের প্রান্তকে রিসোর্স আইডির মাধ্যমে নির্দিষ্ট করা ভিউয়ের ডানদিকে পজিশন করে।

এগুলি হল কয়েকটি উদাহরণ। RelativeLayout.LayoutParams-এ সব লেআউট অ্যাট্রিবিউট ডকুমেন্ট করা আছে।

প্রতিটি লেআউট প্রপার্টির ভ্যালু হয় কোনও বুলিয়ান যা প্যারেন্ট RelativeLayout-এর সাপেক্ষে লেআউট পজিশন চালু করে অথবা কোনও আইডি যা লেআউটের মধ্যে অন্য একটি ভিউকে রেফারেন্স করে যার সাপেক্ষে ভিউটিকে পজিশন করা উচিত।

আপনার XML লেআউটে, লেআউটের মধ্যে অন্যান্য ভিউয়ের বিরুদ্ধে নির্ভরতা যেকোনও ক্রমে ঘোষণা করা যেতে পারে। যেমন, আপনি ঘোষণা করতে পারেন যে "view1" কে "view2"-এর নিচে পজিশন করা হবে, এমনকি "view2" যদি হায়ারার্কিতে ঘোষণা করা শেষ ভিউ হয়। নিচে দেওয়া উদাহরণে এই ধরনের পরিস্থিতি দেখানো হয়েছে।

উদাহরণ

প্রতিটি ভিউয়ের আপেক্ষিক পজিশন কন্ট্রোল করে এমন প্রতিটি অ্যাট্রিবিউটকে হাইলাইট করা হয়েছে।

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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" >
    <EditText
        android:id="@+id/name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/reminder" />
    <Spinner
        android:id="@+id/dates"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_below="@id/name"
        android:layout_alignParentLeft="true"
        android:layout_toLeftOf="@+id/times" />
    <Spinner
        android:id="@id/times"
        android:layout_width="96dp"
        android:layout_height="wrap_content"
        android:layout_below="@id/name"
        android:layout_alignParentRight="true" />
    <Button
        android:layout_width="96dp"
        android:layout_height="wrap_content"
        android:layout_below="@id/times"
        android:layout_alignParentRight="true"
        android:text="@string/done" />
</RelativeLayout>

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