مفاهیم و پیادهسازی Jetpack Compose
اندروید استودیو از انواع ویژگیهای XML در فضای نام tools پشتیبانی میکند که ویژگیهای زمان طراحی، مانند اینکه کدام طرحبندی در یک قطعه نمایش داده شود، یا رفتارهای زمان کامپایل، مانند اینکه کدام حالت کوچکسازی برای منابع XML شما اعمال شود، را فعال میکند. هنگام ساخت برنامه، ابزارهای ساخت این ویژگیها را حذف میکنند تا هیچ تاثیری بر اندازه APK یا رفتار زمان اجرا نداشته باشد.
برای استفاده از این ویژگیها، فضای نام tools را به عنصر ریشه هر فایل XML که میخواهید از آنها استفاده کنید، همانطور که در اینجا نشان داده شده است، اضافه کنید:
<RootTag xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" >
ویژگیهای مدیریت خطا
ویژگی زیر به سرکوب پیامهای هشدار lint کمک میکند:
tools:targetApi
مناسب برای : هر عنصری
استفاده شده توسط : لینت
این ویژگی همانند حاشیهنویسی @TargetApi در کد جاوا عمل میکند. این ویژگی به شما امکان میدهد سطح API (به صورت یک عدد صحیح یا به صورت نام کد) را که از این عنصر پشتیبانی میکند، مشخص کنید.
این به ابزارها میگوید که شما معتقدید این عنصر و هر فرزندی فقط در سطح API مشخص شده یا بالاتر استفاده میشوند. این کار باعث میشود که lint در صورت عدم وجود آن عنصر یا ویژگیهای آن در سطح API که شما به عنوان minSdkVersion خود مشخص میکنید، به شما هشدار ندهد.
برای مثال، ممکن است از این ویژگی استفاده کنید زیرا 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>
استفاده شده توسط: ویرایشگر طرحبندی اندروید استودیو
شما میتوانید با استفاده از پیشوند tools: به جای android: با هر ویژگی <View> از چارچوب اندروید، دادههای نمونه را در پیشنمایش طرحبندی خود وارد کنید. این روش زمانی مفید است که مقدار ویژگی تا زمان اجرا پر نشده باشد و شما میخواهید تأثیر آن را در پیشنمایش طرحبندی ببینید.
برای مثال، اگر مقدار ویژگی android:text در زمان اجرا تنظیم شده باشد، یا بخواهید طرحبندی را با مقداری متفاوت از مقدار پیشفرض ببینید، میتوانید tools:text برای تعیین متنی فقط برای پیشنمایش طرحبندی اضافه کنید.

tools:text مقدار "Google Voice" را برای پیشنمایش طرحبندی تنظیم میکند. شما میتوانید هم ویژگی android: namespace که در زمان اجرا استفاده میشود و هم ویژگی منطبق 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، ویرایشگر طرحبندی اندروید استودیو
این ویژگی اعلام میکند که این طرحبندی به طور پیشفرض با کدام فعالیت مرتبط است. این ویژگی، ویژگیهایی را در ویرایشگر یا پیشنمایش طرحبندی فعال میکند که نیاز به دانش در مورد فعالیت دارند، مانند اینکه تم طرحبندی در پیشنمایش چیست و کنترلکنندههای onClick تولید شده از یک quickfix را کجا قرار دهیم، همانطور که در شکل ۲ نشان داده شده است.

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 توسط ویرایشگر Layout
| ثابت | ارزش | توضیحات |
|---|---|---|
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/*"
مناسب برای: هر نمایی که از متن یا تصاویر رابط کاربری پشتیبانی میکند
استفاده شده توسط: ویرایشگر طرحبندی اندروید استودیو
این ویژگی به شما امکان میدهد دادهها یا تصاویر placeholder را به view خود تزریق کنید. برای مثال، برای آزمایش نحوه رفتار طرحبندی خود با متن قبل از نهایی کردن متن رابط کاربری برای برنامه، میتوانید از placeholder text به صورت زیر استفاده کنید:
<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" />
جدول زیر انواع دادههای placeholder را که میتوانید به طرحبندیهای خود تزریق کنید، شرح میدهد:
جدول 2. دادههای جایگذاری برای طرحبندیها
| مقدار ویژگی | شرح دادههای مکاننما |
|---|---|
@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 | تصاویری که میتوانید به عنوان پسزمینه استفاده کنید |