টুলস অ্যাট্রিবিউট রেফারেন্স (ভিউ)

ধারণা এবং জেটপ্যাক কম্পোজ বাস্তবায়ন

অ্যান্ড্রয়েড স্টুডিও তার tools নেমস্পেসে বিভিন্ন ধরনের এক্সএমএল অ্যাট্রিবিউট সমর্থন করে, যা ডিজাইন-টাইম ফিচার (যেমন একটি ফ্র্যাগমেন্টে কোন লেআউট দেখানো হবে) অথবা কম্পাইল-টাইম আচরণ (যেমন আপনার এক্সএমএল রিসোর্সগুলিতে কোন শ্রিংকিং মোড প্রয়োগ করা হবে) নিয়ন্ত্রণ করে। যখন আপনি আপনার অ্যাপ বিল্ড করেন, তখন বিল্ড টুলস এই অ্যাট্রিবিউটগুলো সরিয়ে দেয়, ফলে আপনার এপিকে ফাইলের আকার বা রানটাইম আচরণের উপর এর কোনো প্রভাব পড়ে না।

এই অ্যাট্রিবিউটগুলো ব্যবহার করতে, প্রতিটি XML ফাইলের রুট এলিমেন্টে tools নেমস্পেসটি যোগ করুন যেখানে আপনি এগুলো ব্যবহার করতে চান, যেমনটি এখানে দেখানো হয়েছে:

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

ত্রুটি-পরিচালনা অ্যাট্রিবিউট

নিম্নলিখিত অ্যাট্রিবিউটটি লিন্ট সতর্কীকরণ বার্তা দমন করতে সাহায্য করে:

tools:targetApi

উদ্দিষ্ট : যেকোনো উপাদান

ব্যবহৃত : লিন্ট

এই অ্যাট্রিবিউটটি জাভা কোডের @TargetApi অ্যানোটেশনের মতোই কাজ করে। এটি আপনাকে সেই এপিআই লেভেল (পূর্ণসংখ্যা বা কোড নাম হিসেবে) নির্দিষ্ট করতে দেয়, যা এই এলিমেন্টটিকে সমর্থন করে।

এটি টুলগুলোকে জানায় যে, আপনার মতে এই এলিমেন্ট এবং এর যেকোনো চাইল্ড শুধুমাত্র নির্দিষ্ট API লেভেল বা তার চেয়ে উচ্চতর লেভেলে ব্যবহৃত হয়। এর ফলে, আপনার minSdkVersion হিসেবে নির্দিষ্ট করা API লেভেলে যদি সেই এলিমেন্ট বা তার অ্যাট্রিবিউটগুলো উপলব্ধ না থাকে, তবে লিন্ট আপনাকে সতর্ক করবে না।

উদাহরণস্বরূপ, আপনি এই অ্যাট্রিবিউটটি ব্যবহার করতে পারেন কারণ GridLayout শুধুমাত্র API লেভেল 14 এবং তার উপরের সংস্করণগুলিতে উপলব্ধ, কিন্তু আপনি জানেন যে আপনার কোডে এর চেয়ে নিম্ন কোনো সংস্করণের জন্য এই লেআউটটি ব্যবহৃত হয় না:

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:targetApi="14" >

(তবে, মনে রাখবেন যে আমরা এর পরিবর্তে সাপোর্ট লাইব্রেরি থেকে GridLayout ব্যবহার করার পরামর্শ দিই।)

ডিজাইন-টাইম ভিউ অ্যাট্রিবিউট

নিম্নলিখিত অ্যাট্রিবিউটগুলো লেআউটের এমন সব বৈশিষ্ট্য নির্ধারণ করে, যা শুধুমাত্র অ্যান্ড্রয়েড স্টুডিও লেআউট প্রিভিউতে দেখা যায়।

tools: android:

এর জন্য উদ্দিষ্ট: <View>

ব্যবহৃত হয়: অ্যান্ড্রয়েড স্টুডিও লেআউট এডিটর

অ্যান্ড্রয়েড ফ্রেমওয়ার্কের যেকোনো <View> অ্যাট্রিবিউটের সাথে android: এর পরিবর্তে tools: প্রিফিক্স ব্যবহার করে আপনি আপনার লেআউট প্রিভিউতে স্যাম্পল ডেটা যোগ করতে পারেন। এটি তখন কাজে আসে যখন অ্যাট্রিবিউটের ভ্যালু রানটাইমের আগে পূরণ হয় না এবং আপনি লেআউট প্রিভিউতে এর প্রভাব দেখতে চান।

উদাহরণস্বরূপ, যদি android:text অ্যাট্রিবিউটের মান রানটাইমে সেট করা হয়, অথবা আপনি ডিফল্ট মানের চেয়ে ভিন্ন কোনো মান দিয়ে লেআউটটি দেখতে চান, তাহলে শুধুমাত্র লেআউট প্রিভিউয়ের জন্য কোনো টেক্সট নির্দিষ্ট করতে আপনি tools:text যোগ করতে পারেন।

tools:text অ্যাট্রিবিউটটি লেআউটের প্রিভিউ-এর ভ্যালু হিসেবে গুগল ভয়েস সেট করে।
চিত্র ১। ` tools:text অ্যাট্রিবিউটটি লেআউট প্রিভিউয়ের মান হিসেবে "Google Voice" নির্ধারণ করে।

আপনি android: নেমস্পেস অ্যাট্রিবিউট, যা রানটাইমে ব্যবহৃত হয়, এবং এর সাথে সম্পর্কিত tools: অ্যাট্রিবিউট, যা শুধুমাত্র লেআউট প্রিভিউতে রানটাইম অ্যাট্রিবিউটকে ওভাররাইড করে, উভয়ই যোগ করতে পারেন।

আপনি শুধুমাত্র লেআউট প্রিভিউয়ের জন্য কোনো অ্যাট্রিবিউট সেটিং বাতিল করতে tools: অ্যাট্রিবিউটও ব্যবহার করতে পারেন। উদাহরণস্বরূপ, যদি আপনার দুটি চাইল্ডসহ একটি FrameLayout থাকে কিন্তু আপনি লেআউট প্রিভিউতে শুধুমাত্র একটি চাইল্ড দেখতে চান, তাহলে আপনি সেগুলোর একটিকে লেআউট প্রিভিউতে অদৃশ্য করে দিতে পারেন, যেমনটি এখানে দেখানো হয়েছে:

<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="First" />

<Button
    android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Second"
    tools:visibility="invisible"  />

ডিজাইন ভিউতে লেআউট এডিটর ব্যবহার করার সময়, প্রোপার্টিজ উইন্ডো আপনাকে কিছু ডিজাইন-টাইম ভিউ অ্যাট্রিবিউট সম্পাদনা করার সুযোগ দেয়। প্রতিটি ডিজাইন-টাইম অ্যাট্রিবিউট একটি রেঞ্চ আইকন দ্বারা নির্দেশিত থাকে। রেঞ্চ আইকন একই নামের আসল অ্যাট্রিবিউট থেকে এটিকে আলাদা করার জন্য অ্যাট্রিবিউটের নামের পাশে।

tools:context

এর জন্য উদ্দিষ্ট: যেকোনো রুট <View>

ব্যবহৃত হয়: লিন্ট, অ্যান্ড্রয়েড স্টুডিও লেআউট এডিটর

এই অ্যাট্রিবিউটটি ঘোষণা করে যে এই লেআউটটি ডিফল্টরূপে কোন অ্যাক্টিভিটির সাথে যুক্ত। এটি এডিটর বা লেআউট প্রিভিউতে এমন সব ফিচার সক্রিয় করে, যেগুলোর জন্য অ্যাক্টিভিটি সম্পর্কে জানার প্রয়োজন হয়; যেমন প্রিভিউতে লেআউটের থিম কী এবং কুইকফিক্স থেকে তৈরি onClick হ্যান্ডলারগুলো কোথায় যুক্ত করতে হবে, যা চিত্র ২-এ দেখানো হয়েছে।

onClick অ্যাট্রিবিউটের জন্য কুইকফিক্সটি কেবল তখনই কাজ করে, যদি আপনি tools:context সেট করে থাকেন।
চিত্র ২। onClick অ্যাট্রিবিউটের জন্য কুইকফিক্সটি কেবল তখনই কাজ করে, যদি আপনি tools:context সেট করে থাকেন।

আপনি ম্যানিফেস্ট ফাইলের মতো একই ডট প্রিফিক্স ব্যবহার করে অ্যাক্টিভিটি ক্লাসের নাম নির্দিষ্ট করতে পারেন (সম্পূর্ণ প্যাকেজ নামটি বাদ দিয়ে)।

উদাহরণস্বরূপ:

<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity" >

tools:itemCount

এর জন্য উদ্দিষ্ট: <RecyclerView>

ব্যবহৃত হয়: অ্যান্ড্রয়েড স্টুডিও লেআউট এডিটর

কোনো নির্দিষ্ট RecyclerView ক্ষেত্রে এই অ্যাট্রিবিউটটি নির্ধারণ করে যে, লেআউট এডিটর প্রিভিউ উইন্ডোতে কতগুলো আইটেম রেন্ডার করবে।

উদাহরণস্বরূপ:

<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/recyclerView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:itemCount="3"/>

tools:layout

এর জন্য উদ্দিষ্ট: <fragment>

ব্যবহৃত হয়: অ্যান্ড্রয়েড স্টুডিও লেআউট এডিটর

এই অ্যাট্রিবিউটটি নির্ধারণ করে যে আপনি ফ্র্যাগমেন্টের ভিতরে লেআউট প্রিভিউটি দিয়ে কোন লেআউটটি আঁকতে চান, কারণ লেআউট প্রিভিউ সেই অ্যাক্টিভিটি কোডটি চালাতে পারে না যা সাধারণত লেআউটটি প্রয়োগ করে।

উদাহরণস্বরূপ:

<fragment android:name="com.example.main.ItemListFragment"
    tools:layout="@layout/list_content" />

tools:listitem , tools:listheader , tools:listfooter

এর জন্য উদ্দিষ্ট: <AdapterView> (এবং <ListView> মতো সাবক্লাসসমূহ)

ব্যবহৃত হয়: অ্যান্ড্রয়েড স্টুডিও লেআউট এডিটর

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

উদাহরণস্বরূপ:

<ListView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@android:id/list"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:listitem="@layout/sample_list_item"
    tools:listheader="@layout/sample_list_header"
    tools:listfooter="@layout/sample_list_footer" />

tools:showIn

এর জন্য উদ্দিষ্ট: লেআউটের অন্তর্গত যেকোনো রুট <View> , যা একটি <include> দ্বারা নির্দেশিত হয়।

ব্যবহৃত হয়: অ্যান্ড্রয়েড স্টুডিও লেআউট এডিটর

এই অ্যাট্রিবিউটটি আপনাকে <include> ব্যবহার করে এমন একটি লেআউট নির্দেশ করতে দেয় যা এই ফাইলটি ব্যবহার করে, ফলে আপনি এই ফাইলটিকে তার প্যারেন্ট লেআউটে এমবেড করা অবস্থায় কেমন দেখাবে তা প্রিভিউ এবং এডিট করতে পারেন।

উদাহরণস্বরূপ:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:text="@string/hello_world"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    tools:showIn="@layout/activity_main" />

এখন লেআউট প্রিভিউতে এই TextView লেআউটটি দেখানো হচ্ছে, যা activity_main লেআউটের ভিতরে ঠিক যেমনটি দেখা যায়।

tools:menu

এর জন্য উদ্দিষ্ট: যেকোনো রুট <View>

ব্যবহৃত হয়: অ্যান্ড্রয়েড স্টুডিও লেআউট এডিটর

এই অ্যাট্রিবিউটটি নির্দিষ্ট করে যে লেআউট প্রিভিউ অ্যাপ বারে কোন মেনুটি দেখাবে। এর মান হলো এক বা একাধিক মেনু আইডি, যা কমা দ্বারা পৃথক করা থাকবে এবং এতে @menu/ বা এই জাতীয় কোনো আইডি প্রিফিক্স এবং .xml এক্সটেনশন থাকবে না।

উদাহরণস্বরূপ:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:menu="menu1,menu2" />

tools:minValue , tools:maxValue

এর জন্য উদ্দিষ্ট: <NumberPicker>

ব্যবহৃত হয়: অ্যান্ড্রয়েড স্টুডিও লেআউট এডিটর

এই অ্যাট্রিবিউটগুলো একটি NumberPicker ভিউয়ের জন্য সর্বনিম্ন এবং সর্বোচ্চ মান নির্ধারণ করে।

উদাহরণস্বরূপ:

<NumberPicker xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/numberPicker"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    tools:minValue="0"
    tools:maxValue="10" />

tools:openDrawer

এর জন্য উদ্দিষ্ট: <DrawerLayout>

ব্যবহৃত হয়: অ্যান্ড্রয়েড স্টুডিও লেআউট এডিটর

এই অ্যাট্রিবিউটটি আপনাকে প্রিভিউতে একটি DrawerLayout খুলতে দেয়।

এছাড়াও, নিম্নলিখিত মানগুলির মধ্যে একটি পাস করে আপনি লেআউট এডিটর কীভাবে লেআউটটি রেন্ডার করবে তা পরিবর্তন করতে পারেন:

সারণি ১. লেআউট এডিটর কীভাবে একটি DrawerLayout রেন্ডার করবে তা পরিবর্তন করার মানসমূহ।

ধ্রুবক মূল্য বর্ণনা
end ৮০০০০৫ বস্তুটিকে তার আকার পরিবর্তন না করে কন্টেইনারের শেষ প্রান্তে ঠেলে দিন।
left বস্তুটিকে তার কন্টেইনারের বাম দিকে সরান, এর আকার পরিবর্তন করবেন না।
right বস্তুটিকে তার আকার পরিবর্তন না করে, নিজ ধারকের ডানদিকে সরান।
start ৮০০০০৩ অবজেক্টটির আকার পরিবর্তন না করে সেটিকে তার কন্টেইনারের শুরুতে ঠেলে দিন।

উদাহরণস্বরূপ:

<androidx.drawerlayout.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:openDrawer="start" />

"@tools:sample/*" রিসোর্স

এর জন্য উদ্দিষ্ট: যেকোনো ভিউ যা UI টেক্সট বা ছবি সমর্থন করে।

ব্যবহৃত হয়: অ্যান্ড্রয়েড স্টুডিও লেআউট এডিটর

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

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    tools:text="@tools:sample/lorem" />

নিম্নলিখিত সারণিতে সেই প্রকারের প্লেসহোল্ডার ডেটা বর্ণনা করা হয়েছে যা আপনি আপনার লেআউটে অন্তর্ভুক্ত করতে পারেন:

সারণি ২. লেআউটের জন্য স্থানধারক ডেটা

অ্যাট্রিবিউট মান প্লেসহোল্ডার ডেটার বিবরণ
@tools:sample/full_names @tools:sample/first_names এবং @tools:sample/last_names এর সমন্বয় থেকে এলোমেলোভাবে তৈরি পূর্ণ নাম।
@tools:sample/first_names সাধারণ প্রথম নাম
@tools:sample/last_names সাধারণ শেষ নাম
@tools:sample/cities বিশ্বজুড়ে শহরগুলোর নাম
@tools:sample/us_zipcodes এলোমেলোভাবে তৈরি মার্কিন জিপ কোড
@tools:sample/us_phones নিম্নলিখিত বিন্যাসে এলোমেলোভাবে তৈরি ফোন নম্বর: (800) 555-xxxx
@tools:sample/lorem ল্যাটিন ভাষায় স্থানধারক পাঠ্য
@tools:sample/date/day_of_week নির্দিষ্ট ফরম্যাটের জন্য এলোমেলো তারিখ এবং সময়
@tools:sample/date/ddmmyy
@tools:sample/date/mmddyy
@tools:sample/date/hhmm
@tools:sample/date/hhmmss
@tools:sample/avatars ভেক্টর ড্রয়েবল যা আপনি প্রোফাইল অ্যাভাটার হিসেবে ব্যবহার করতে পারেন
@tools:sample/backgrounds/scenic যে ছবিগুলো আপনি ব্যাকগ্রাউন্ড হিসেবে ব্যবহার করতে পারেন