مرجع ویژگی‌های ابزارها (Views)

مفاهیم و پیاده‌سازی 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 را برای پیش‌نمایش طرح‌بندی تعیین می‌کند.
شکل ۱. ویژگی 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 را تنظیم کرده باشید
شکل ۲. 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 تصاویری که می‌توانید به عنوان پس‌زمینه استفاده کنید