লেআউটগুলিকে <অন্তর্ভুক্ত করুন>

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

যদিও অ্যান্ড্রয়েড ছোট, পুনঃব্যবহারযোগ্য, ইন্টারেক্টিভ উপাদান প্রদানের জন্য বিভিন্ন উইজেট অফার করে, তবে আপনাকে একটি বিশেষ লেআউটের প্রয়োজন এমন বড় উপাদানগুলিকে পুনরায় ব্যবহার করতে হতে পারে। সম্পূর্ণ লেআউটগুলিকে দক্ষতার সাথে পুনঃব্যবহার করতে, একটি লেআউটকে অন্যটির ভিতরে এম্বেড করতে <include> এবং <merge> ট্যাগগুলি ব্যবহার করুন।

এটি আপনাকে জটিল লেআউট তৈরি করতে দেয়—যেমন একটি হ্যাঁ বা না বোতাম প্যানেল বা বর্ণনা পাঠ্য সহ একটি কাস্টম অগ্রগতি বার৷ এবং এর মানে হল যে আপনি আপনার অ্যাপ্লিকেশনের যেকোনো উপাদান বের করতে পারেন যা একাধিক লেআউট জুড়ে সাধারণ, সেগুলিকে আলাদাভাবে পরিচালনা করতে এবং প্রতিটি লেআউটে অন্তর্ভুক্ত করতে পারেন। আপনি যখন একটি কাস্টম View লিখে স্বতন্ত্র UI উপাদান তৈরি করতে পারেন, আপনি একটি লেআউট ফাইল পুনরায় ব্যবহার করে এটি আরও সহজে করতে পারেন৷

একটি পুনর্ব্যবহারযোগ্য বিন্যাস তৈরি করুন

একটি নতুন XML ফাইল তৈরি করে শুরু করুন এবং আপনি যে লেআউটটি পুনরায় ব্যবহার করতে চান তা সংজ্ঞায়িত করুন। উদাহরণস্বরূপ, এখানে একটি লেআউট রয়েছে যা প্রতিটি কার্যকলাপে অন্তর্ভুক্ত করার জন্য একটি শিরোনাম বার সংজ্ঞায়িত করে ( titlebar.xml ):

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/titlebar_bg"
    tools:showIn="@layout/activity_main" >

    <ImageView android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:src="@drawable/gafricalogo" />
</FrameLayout>

আপনি এই লেআউটটি যোগ করার পরিকল্পনা করছেন এমন প্রতিটি লেআউটে আপনি যেভাবে এটি দেখতে চান তা রুট View অবশ্যই হতে হবে।

<include> ট্যাগ ব্যবহার করুন

লেআউটের ভিতরে যেখানে আপনি পুনরায় ব্যবহারযোগ্য উপাদান যোগ করতে চান, <include> ট্যাগ যোগ করুন। উদাহরণস্বরূপ, এখানে একটি লেআউট রয়েছে যা পূর্ববর্তী উদাহরণ থেকে শিরোনাম বার অন্তর্ভুক্ত করে:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/app_bg"
    android:gravity="center_horizontal">

    <include layout="@layout/titlebar"/>

    <TextView android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:text="@string/hello"
              android:padding="10dp" />
    ...
</LinearLayout>

এছাড়াও আপনি <include> ট্যাগে উল্লেখ করে অন্তর্ভুক্ত লেআউটের রুট ভিউ-এর যেকোন android:layout_* বৈশিষ্ট্য—সব লেআউট প্যারামিটার ওভাররাইড করতে পারেন। এটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

<include android:id="@+id/news_title"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         layout="@layout/title"/>

যাইহোক, আপনি যদি <include> ট্যাগ ব্যবহার করে লেআউট বৈশিষ্ট্যগুলিকে ওভাররাইড করতে চান তবে অন্যান্য লেআউট বৈশিষ্ট্যগুলি কার্যকর করতে android:layout_height এবং android:layout_width ওভাররাইড করুন৷

<merge> ট্যাগ ব্যবহার করুন

<merge> ট্যাগ আপনার ভিউ হায়ারার্কিতে অপ্রয়োজনীয় ভিউ গ্রুপগুলিকে দূর করতে সাহায্য করে যখন একটি লেআউট অন্যটির মধ্যে অন্তর্ভুক্ত করে। <merge> এর একটি ব্যবহার হল যখন আপনি একটি ViewGroup প্রসারিত করে একটি কাস্টম ভিউ বাস্তবায়ন করেন।

উদাহরণস্বরূপ, যদি আপনার প্রধান লেআউটটি একটি উল্লম্ব LinearLayout হয় যেখানে পরপর দুটি দৃশ্য একাধিক লেআউটে পুনরায় ব্যবহার করা যেতে পারে, তাহলে আপনি যেখানে দুটি ভিউ রাখবেন সেখানে পুনরায় ব্যবহারযোগ্য লেআউটটির নিজস্ব রুট ভিউ প্রয়োজন। যাইহোক, পুনঃব্যবহারযোগ্য লেআউটের মূল হিসাবে অন্য একটি LinearLayout ব্যবহার করার ফলে একটি উল্লম্ব LinearLayout ভিতরে একটি উল্লম্ব LinearLayout তৈরি হয়। নেস্টেড LinearLayout কোন বাস্তব উদ্দেশ্য পূরণ করে না এবং আপনার UI কর্মক্ষমতা কমিয়ে দেয়।

পরিবর্তে, আপনি একটি কাস্টম ভিউ তৈরি করতে একটি LinearLayout প্রসারিত করতে পারেন এবং এর চাইল্ড ভিউ বর্ণনা করতে একটি লেআউট XML ব্যবহার করতে পারেন। XML-এর শীর্ষ ট্যাগ হল <merge> , LinearLayout এর পরিবর্তে, নিচের উদাহরণে দেখানো হয়েছে:

<merge xmlns:android="http://schemas.android.com/apk/res/android">

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/add"/>

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/delete"/>

</merge>

আপনি যখন এই লেআউটটিকে অন্য লেআউটে অন্তর্ভুক্ত করেন— <include> ট্যাগ ব্যবহার করে—সেস্টেমটি <merge> উপাদানটিকে উপেক্ষা করে এবং <include> ট্যাগের জায়গায় সরাসরি লেআউটে দুটি বোতাম স্থাপন করে।

<include> সম্পর্কে আরও তথ্যের জন্য, লেআউট রিসোর্স দেখুন।