লেআউট সম্পদ

একটি লেআউট সংস্থান একটি Activity বা একটি UI এর একটি উপাদানে UI-এর জন্য আর্কিটেকচারকে সংজ্ঞায়িত করে৷

ফাইল অবস্থান:
res/layout/ filename .xml
ফাইলের নাম রিসোর্স আইডি হিসাবে ব্যবহৃত হয়।
সংকলিত সম্পদ ডেটা টাইপ:
একটি View (বা সাবক্লাস) রিসোর্সে রিসোর্স পয়েন্টার
সম্পদ রেফারেন্স:
জাভাতে: R.layout. filename
XML-এ: @[ package :]layout/ filename
বাক্য গঠন:
<?xml version="1.0" encoding="utf-8"?>
<ViewGroup
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@[+][package:]id/resource_name"
    android:layout_height=["dimension" | "match_parent" | "wrap_content"]
    android:layout_width=["dimension" | "match_parent" | "wrap_content"]
    [ViewGroup-specific attributes] >
    <View
        android:id="@[+][package:]id/resource_name"
        android:layout_height=["dimension" | "match_parent" | "wrap_content"]
        android:layout_width=["dimension" | "match_parent" | "wrap_content"]
        [View-specific attributes] >
        <requestFocus/>
    </View>
    <ViewGroup >
        <View />
    </ViewGroup>
    <include layout="@layout/layout_resource"/>
</ViewGroup>

দ্রষ্টব্য: মূল উপাদানটি একটি ViewGroup , একটি View , বা একটি <merge> উপাদান হতে পারে, তবে শুধুমাত্র একটি মূল উপাদান থাকতে পারে এবং এটিতে অবশ্যই xmlns:android নামস্থান সহ android নামস্থানের পূর্ববর্তী বাক্য গঠন উদাহরণে দেখানো হয়েছে।

উপাদান:
<ViewGroup>
অন্যান্য View উপাদানের জন্য একটি ধারক। বিভিন্ন ধরণের ViewGroup অবজেক্ট রয়েছে এবং প্রতিটি আপনাকে বিভিন্ন উপায়ে চাইল্ড এলিমেন্টের লেআউট নির্দিষ্ট করতে দেয়। বিভিন্ন ধরনের ViewGroup অবজেক্টের মধ্যে রয়েছে LinearLayout , RelativeLayout এবং FrameLayout

অনুমান করবেন না যে ViewGroup কোনো ডেরিভেশন নেস্টেড ভিউ গ্রহণ করে। কিছু ভিউ গ্রুপ হল AdapterView ক্লাসের বাস্তবায়ন, যা শুধুমাত্র Adapter থেকে তার বাচ্চাদের নির্ধারণ করে।

গুণাবলী:

android:id
রিসোর্স আইডি । উপাদানটির জন্য একটি অনন্য সম্পদের নাম, যা আপনি আপনার অ্যাপ্লিকেশন থেকে ViewGroup একটি রেফারেন্স পেতে ব্যবহার করতে পারেন। আরও তথ্যের জন্য, android:id বিভাগটির মান দেখুন।
android:layout_height
মাত্রা বা কীওয়ার্ডপ্রয়োজন একটি মাত্রা মান (বা মাত্রা সম্পদ ) বা একটি কীওয়ার্ড ( "match_parent" বা "wrap_content" ) হিসাবে গ্রুপের জন্য উচ্চতা। আরও তথ্যের জন্য, android:layout_height এবং android:layout_width বিভাগের মান দেখুন।
android:layout_width
মাত্রা বা কীওয়ার্ডপ্রয়োজন গোষ্ঠীর জন্য প্রস্থ, একটি মাত্রা মান (বা মাত্রা সম্পদ ) বা একটি কীওয়ার্ড ( "match_parent" বা "wrap_content" ) হিসাবে। আরও তথ্যের জন্য, android:layout_height এবং android:layout_width বিভাগের মান দেখুন।

ViewGroup বেস ক্লাস আরও বৈশিষ্ট্য সমর্থন করে, এবং আরও অনেকগুলি ViewGroup এর প্রতিটি বাস্তবায়ন দ্বারা সমর্থিত। সমস্ত উপলব্ধ বৈশিষ্ট্যগুলির একটি রেফারেন্সের জন্য, ViewGroup ক্লাসের জন্য সংশ্লিষ্ট রেফারেন্স ডকুমেন্টেশন দেখুন, উদাহরণস্বরূপ, LinearLayout XML বৈশিষ্ট্যগুলি

<View>
একটি পৃথক UI উপাদান, সাধারণত একটি উইজেট হিসাবে উল্লেখ করা হয়। বিভিন্ন ধরণের View অবজেক্টের মধ্যে রয়েছে TextView , Button এবং CheckBox

গুণাবলী:

android:id
রিসোর্স আইডি । উপাদানটির জন্য একটি অনন্য সম্পদের নাম, যা আপনি আপনার অ্যাপ্লিকেশন থেকে View -এর একটি রেফারেন্স পেতে ব্যবহার করতে পারেন। আরও তথ্যের জন্য, android:id বিভাগটির মান দেখুন।
android:layout_height
মাত্রা বা কীওয়ার্ডপ্রয়োজন একটি মাত্রা মান (বা মাত্রা সম্পদ ) বা একটি কীওয়ার্ড ( "match_parent" বা "wrap_content" ) হিসাবে উপাদানের উচ্চতা। আরও তথ্যের জন্য, android:layout_height এবং android:layout_width বিভাগের মান দেখুন।
android:layout_width
মাত্রা বা কীওয়ার্ডপ্রয়োজন একটি মাত্রা মান (বা মাত্রা সম্পদ ) বা একটি কীওয়ার্ড ( "match_parent" বা "wrap_content" ) হিসাবে উপাদানটির প্রস্থ। আরও তথ্যের জন্য, android:layout_height এবং android:layout_width বিভাগের মান দেখুন।

View বেস ক্লাস আরও অ্যাট্রিবিউট সমর্থন করে, এবং আরও অনেকগুলি View -এর প্রতিটি বাস্তবায়ন দ্বারা সমর্থিত। আরও তথ্যের জন্য, লেআউট পড়ুন। সমস্ত উপলব্ধ বৈশিষ্ট্যগুলির একটি রেফারেন্সের জন্য, সংশ্লিষ্ট রেফারেন্স ডকুমেন্টেশন দেখুন, উদাহরণস্বরূপ, TextView XML বৈশিষ্ট্যগুলি

<requestFocus>
View অবজেক্টের প্রতিনিধিত্বকারী যেকোন উপাদানে এই খালি উপাদানটি অন্তর্ভুক্ত থাকতে পারে, যা পর্দায় তার মূল প্রাথমিক ফোকাস দেয়। আপনার প্রতি ফাইলের মধ্যে এই উপাদানগুলির মধ্যে শুধুমাত্র একটি থাকতে পারে।
<include>
এই লেআউটে একটি লেআউট ফাইল অন্তর্ভুক্ত করে।

গুণাবলী:

layout
লেআউট সম্পদপ্রয়োজন একটি লেআউট সম্পদের রেফারেন্স।
android:id
রিসোর্স আইডি । অন্তর্ভুক্ত লেআউটে রুট ভিউতে দেওয়া আইডিটিকে ওভাররাইড করে।
android:layout_height
মাত্রা বা কীওয়ার্ড । অন্তর্ভুক্ত লেআউটে রুট ভিউতে দেওয়া উচ্চতা ওভাররাইড করে। শুধুমাত্র কার্যকর যদি android:layout_width ঘোষণা করা হয়।
android:layout_width
মাত্রা বা কীওয়ার্ড । অন্তর্ভুক্ত লেআউটে রুট ভিউতে প্রদত্ত প্রস্থকে ওভাররাইড করে। শুধুমাত্র কার্যকরী যদি android:layout_height ও ঘোষণা করা হয়।

আপনি অন্তর্ভুক্ত লেআউটে মূল উপাদান দ্বারা সমর্থিত <include> -এ অন্য যেকোন লেআউট বৈশিষ্ট্য অন্তর্ভুক্ত করতে পারেন এবং তারা মূল উপাদানে সংজ্ঞায়িত সেগুলিকে ওভাররাইড করে।

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

একটি লেআউট অন্তর্ভুক্ত করার আরেকটি উপায় হল ViewStub ব্যবহার করা: একটি লাইটওয়েট ভিউ যা আপনি স্পষ্টভাবে স্ফীত না হওয়া পর্যন্ত কোনো লেআউট স্থান গ্রহণ করে না। আপনি যখন করেন, তখন এটির android:layout বৈশিষ্ট্য দ্বারা সংজ্ঞায়িত একটি লেআউট ফাইল অন্তর্ভুক্ত করে। ViewStub ব্যবহার সম্পর্কে আরও তথ্যের জন্য, চাহিদা অনুযায়ী লোড ভিউ পড়ুন।

<merge>
একটি বিকল্প রুট উপাদান যা লেআউট অনুক্রমে আঁকা হয় না। এটিকে রুট এলিমেন্ট হিসেবে ব্যবহার করা উপযোগী যখন আপনি জানেন যে এই লেআউটটি এমন একটি লেআউটে স্থাপন করা হয়েছে যাতে ইতিমধ্যেই <merge> এলিমেন্টের বাচ্চাদের ধারণ করার জন্য উপযুক্ত প্যারেন্ট View রয়েছে।

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

android:id এর জন্য মান

আইডি মানের জন্য, আপনি সাধারণত এই সিনট্যাক্স ফর্মটি ব্যবহার করেন: "@+id/ name " , যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে। প্লাস চিহ্ন, + , নির্দেশ করে যে এটি একটি নতুন রিসোর্স আইডি, এবং aapt টুলটি R.java ক্লাসে একটি নতুন রিসোর্স পূর্ণসংখ্যা তৈরি করে, যদি এটি ইতিমধ্যে বিদ্যমান না থাকে।

<TextView android:id="@+id/nameTextbox"/>

nameTextbox নামটি এখন এই উপাদানটির সাথে সংযুক্ত একটি রিসোর্স আইডি। তারপরে আপনি TextView উল্লেখ করতে পারেন যার সাথে আইডিটি জাভাতে যুক্ত:

কোটলিন

val textView: TextView? = findViewById(R.id.nameTextbox)

জাভা

TextView textView = findViewById(R.id.nameTextbox);

এই কোডটি TextView অবজেক্ট রিটার্ন করে।

যাইহোক, যদি আপনি ইতিমধ্যেই একটি আইডি রিসোর্স সংজ্ঞায়িত করে থাকেন, এবং এটি ইতিমধ্যেই ব্যবহার করা না হয়, তাহলে আপনি android:id মানের প্লাস চিহ্নটি বাদ দিয়ে একটি View এলিমেন্টে সেই IDটি প্রয়োগ করতে পারেন।

android:layout_height এবং android:layout_width-এর মান

উচ্চতা এবং প্রস্থের মানগুলি অ্যান্ড্রয়েড (px, dp, sp, pt, in, mm) দ্বারা সমর্থিত যেকোন মাত্রা ইউনিট ব্যবহার করে বা নিম্নলিখিত কীওয়ার্ডগুলির সাহায্যে প্রকাশ করা হয়:

মান বর্ণনা
match_parent প্যারেন্ট উপাদানের সাথে মেলে মাত্রা সেট করে। API লেভেল 8 এ যোগ করা হয়েছে fill_parent বর্জন করতে।
wrap_content এই উপাদানটির বিষয়বস্তুর সাথে মানানসই করার জন্য প্রয়োজনীয় আকারে শুধুমাত্র মাত্রা সেট করে।

কাস্টম ভিউ উপাদান

আপনি কাস্টম View এবং ViewGroup এলিমেন্ট তৈরি করতে পারেন এবং একটি স্ট্যান্ডার্ড লেআউট এলিমেন্টের মতো আপনার লেআউটে প্রয়োগ করতে পারেন। আপনি XML উপাদানে সমর্থিত বৈশিষ্ট্যগুলিও নির্দিষ্ট করতে পারেন। আরও তথ্যের জন্য, কাস্টম ভিউ উপাদান তৈরি করুন দেখুন।

উদাহরণ:
XML ফাইল res/layout/main_activity.xml এ সংরক্ষিত হয়েছে :
<?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:orientation="vertical" >
    <TextView android:id="@+id/text"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="Hello, I am a TextView" />
    <Button android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello, I am a Button" />
</LinearLayout>

এই অ্যাপ্লিকেশন কোড onCreate() পদ্ধতিতে একটি Activity জন্য লেআউট লোড করে:

কোটলিন

public override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.main_activity)
}

জাভা

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_activity);
}
আরো দেখুন: