আপেক্ষিক বিন্যাস

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

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

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

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

অবস্থান নির্ধারণ দৃশ্য

RelativeLayout চাইল্ড ভিউগুলোকে প্যারেন্ট ভিউয়ের সাপেক্ষে অথবা একে অপরের সাপেক্ষে (ID দ্বারা নির্দিষ্ট) তাদের অবস্থান নির্ধারণ করতে দেয়। ফলে আপনি দুটি এলিমেন্টকে ডান বর্ডার অনুযায়ী অ্যালাইন করতে পারেন, অথবা একটিকে অন্যটির নিচে, স্ক্রিনের কেন্দ্রে, বামে কেন্দ্রে ইত্যাদি রাখতে পারেন। ডিফল্টভাবে, সমস্ত চাইল্ড ভিউ লেআউটের উপরের-বামে আঁকা হয়, তাই আপনাকে অবশ্যই 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 দেখুন।