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

ধারণা ও Jetpack Compose-এর প্রয়োগ

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

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

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

সমস্যা ম্যানেজ করার অ্যাট্রিবিউট

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

tools:targetApi

উদ্দেশ্য: যেকোনও এলিমেন্ট

ব্যবহার করে: Lint

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

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

যেমন, আপনি এই অ্যাট্রিবিউট ব্যবহার করতে পারেন কারণ GridLayout শুধুমাত্র API লেভেল ১৪ এবং তার থেকে উন্নত ভার্সনে উপলভ্য, তবে আপনি জানেন যে এই লেআউট আপনার কোডে কোনও নিম্ন ভার্সনের জন্য ব্যবহার করা হয় না:

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

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

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

নিম্নলিখিত অ্যাট্রিবিউটগুলি লেআউটের বৈশিষ্ট্যগুলি সংজ্ঞায়িত করে যা শুধুমাত্র Android Studio লেআউট প্রিভিউতে দেখা যায়।

android:-এর পরিবর্তে tools:

এর জন্য: <View>

ব্যবহার করে: Android Studio লেআউট এডিটর

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

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

tools:text অ্যাট্রিবিউট লেআউট প্রিভিউয়ের জন্য Google Voice-কে ভ্যালু হিসেবে সেট করে
ছবি ১. 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>

ব্যবহার করে: Lint, Android Studio লেআউট এডিটর

এই অ্যাট্রিবিউট ঘোষণা করে যে এই লেআউটটি ডিফল্টভাবে কোন অ্যাক্টিভিটির সাথে যুক্ত। এটি এডিটর বা লেআউট প্রিভিউতে এমন ফিচার চালু করে যার জন্য অ্যাক্টিভিটি সম্পর্কে জানতে হয়, যেমন প্রিভিউতে লেআউট থিম কী এবং কুইকফিক্স থেকে তৈরি করা 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>

ব্যবহার করে: Android Studio লেআউট এডিটর

প্রদত্ত 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>

ব্যবহার করে: Android Studio লেআউট এডিটর

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

যেমন:

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

tools:listitem, tools:listheader, tools:listfooter

এর জন্য: <AdapterView> (এবং <ListView>-এর মতো সাবক্লাস)

ব্যবহার করে: Android Studio লেআউট এডিটর

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

যেমন:

<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> দ্বারা রেফার করা হয়

ব্যবহার করে: Android Studio লেআউট এডিটর

এই অ্যাট্রিবিউট আপনাকে এমন একটি লেআউট নির্দেশ করতে দেয় যা <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>

ব্যবহার করে: Android Studio লেআউট এডিটর

এই অ্যাট্রিবিউট নির্দিষ্ট করে যে লেআউট প্রিভিউ অ্যাপ বারে কোন মেনু দেখায়। ভ্যালু হল এক বা একাধিক মেনু আইডি, যা কমা দিয়ে আলাদা করা, @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>

ব্যবহার করে: Android Studio লেআউট এডিটর

এইসব অ্যাট্রিবিউট 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>

ব্যবহার করে: Android Studio লেআউট এডিটর

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

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

টেবিল ১. লেআউট এডিটর কীভাবে DrawerLayout রেন্ডার করে তা পরিবর্তন করার ভ্যালু

স্থিরমানবর্ণনা
end800005অবজেক্টের সাইজ পরিবর্তন না করে, কন্টেনারের শেষ প্রান্তে অবজেক্টটি পুশ করুন।
left3অবজেক্টের সাইজ পরিবর্তন না করে, সেটিকে কন্টেনারের বাঁদিকে ঠেলে দিন।
right5অবজেক্টের সাইজ পরিবর্তন না করে, কন্টেনারের ডানদিকে অবজেক্ট পুশ করুন।
start800003অবজেক্টকে তার কন্টেনারের শুরুতে পুশ করুন, এর সাইজ পরিবর্তন করবেন না।

যেমন:

<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 টেক্সট বা ছবি কাজ করে এমন যেকোনও ভিউ

ব্যবহার করে: Android Studio লেআউট এডিটর

এই অ্যাট্রিবিউট আপনাকে ভিউতে প্লেসহোল্ডার ডেটা বা ছবি ইনজেক্ট করতে দেয়। যেমন, আপনার অ্যাপের জন্য 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 ব্যাকগ্রাউন্ড হিসেবে ব্যবহার করতে পারবেন এমন ছবি