Android Studio از انواع ویژگیهای XML در فضای نام tools
پشتیبانی میکند که ویژگیهای زمان طراحی را فعال میکنند، مانند اینکه کدام طرح در یک قطعه نشان داده شود، یا رفتارهای زمان کامپایل، مانند حالت کوچکشدن برای اعمال منابع XML. وقتی برنامه خود را میسازید، ابزارهای ساخت این ویژگیها را حذف میکنند تا تأثیری بر اندازه APK یا رفتار زمان اجرا شما نداشته باشد.
برای استفاده از این ویژگیها، فضای نام tools
را به عنصر ریشه هر فایل XML که میخواهید از آنها استفاده کنید، اضافه کنید، همانطور که در اینجا نشان داده شده است:
<RootTag xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" >
ویژگی های رسیدگی به خطا
ویژگیهای زیر به سرکوب پیامهای هشدار پرز کمک میکنند:
tools:ignore
در نظر گرفته شده برای: هر عنصر
استفاده شده توسط: Lint
این ویژگی فهرستی از شناسههای مشکل پرز جدا شده با کاما را میپذیرد که میخواهید ابزارها روی این عنصر یا هر یک از فرزندان آن نادیده بگیرند.
برای مثال، میتوانید به ابزارها بگویید که خطای MissingTranslation
را نادیده بگیرند:
<string name="show_all_apps" tools:ignore="MissingTranslation">All</string>
tools:targetApi
در نظر گرفته شده برای : هر عنصر
استفاده شده توسط : Lint
این ویژگی مانند حاشیه نویسی @TargetApi
در کد جاوا عمل می کند. این به شما امکان می دهد سطح API را (به عنوان یک عدد صحیح یا به عنوان یک نام کد) که از این عنصر پشتیبانی می کند مشخص کنید.
این به ابزارها میگوید که معتقدید این عنصر و هر فرزندی فقط در سطح API مشخص شده یا بالاتر استفاده میشوند. اگر آن عنصر یا ویژگیهای آن در سطح 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:locale
در نظر گرفته شده برای: <resources>
مورد استفاده: Lint، ویرایشگر Android Studio
این به ابزارها میگوید که زبان یا محلی پیشفرض برای منابع موجود در عنصر <resources>
داده شده چیست تا از هشدارهای غلطگیر املا جلوگیری شود. ابزار در غیر این صورت فرض می کند که زبان انگلیسی است.
مقدار باید یک واجد شرایط محلی معتبر باشد.
برای مثال، میتوانید این مورد را به فایل values/strings.xml
پیشفرض خود اضافه کنید تا نشان دهید زبان مورد استفاده برای رشتههای پیشفرض اسپانیایی است نه انگلیسی:
<resources xmlns:tools="http://schemas.android.com/tools"
tools:locale="es">
ویژگی های نمای زمان طراحی
ویژگیهای زیر ویژگیهای طرحبندی را تعریف میکنند که فقط در پیشنمایش طرحبندی Android Studio قابل مشاهده هستند.
tools:
به جای android:
در نظر گرفته شده برای: <View>
مورد استفاده: ویرایشگر طرح بندی اندروید استودیو
میتوانید با استفاده از tools:
پیشوند به جای android:
با هر ویژگی <View>
از چارچوب Android، دادههای نمونه را در پیشنمایش طرحبندی خود وارد کنید. این زمانی مفید است که مقدار مشخصه تا زمان اجرا تکمیل نشده باشد و بخواهید اثر را در پیشنمایش طرحبندی ببینید.
برای مثال، اگر مقدار مشخصه android:text
در زمان اجرا تنظیم شده باشد، یا میخواهید طرحبندی را با مقداری متفاوت از مقدار پیشفرض ببینید، میتوانید tools:text
اضافه کنید تا متنی را فقط برای پیشنمایش طرحبندی مشخص کنید.
میتوانید هم ویژگی 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" />
هنگام استفاده از Layout Editor در نمای طراحی، پنجره Properties به شما امکان می دهد برخی از ویژگی های نمای زمان طراحی را ویرایش کنید. هر ویژگی زمان طراحی با یک نماد آچار نشان داده شده است در کنار نام صفت برای تشخیص آن از ویژگی واقعی همان نام.
tools:context
در نظر گرفته شده برای: هر ریشه <View>
مورد استفاده: Lint، Android Studio Layout Editor
این ویژگی مشخص می کند که این طرح به طور پیش فرض با کدام فعالیت مرتبط است. این ویژگیها را در ویرایشگر یا پیشنمایش طرحبندی فعال میکند که به دانش فعالیت نیاز دارد، مانند اینکه موضوع طرحبندی در پیشنمایش چیست و کجا باید کنترلکنندههای onClick
تولید شده از یک رفع سریع را وارد کنید، همانطور که در شکل 2 نشان داده شده است.
می توانید نام کلاس فعالیت را با استفاده از همان پیشوند نقطه ای که در فایل مانیفست وجود دارد (به استثنای نام کامل بسته) مشخص کنید.
به عنوان مثال:
<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 Layout Editor
برای یک 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 Layout Editor
این ویژگی اعلام میکند که میخواهید پیشنمایش چیدمان در داخل قطعه ترسیم شود، زیرا پیشنمایش طرحبندی نمیتواند کد فعالیتی را که معمولاً طرحبندی را اعمال میکند، اجرا کند.
به عنوان مثال:
<fragment android:name="com.example.main.ItemListFragment"
tools:layout="@layout/list_content" />
tools:listitem
، tools:listheader
، tools:listfooter
در نظر گرفته شده برای: <AdapterView>
(و زیر کلاس هایی مانند <ListView>
)
استفاده شده توسط: Android Studio Layout Editor
این ویژگیها مشخص میکنند که کدام طرح در پیشنمایش طرحبندی برای آیتمهای فهرست، سرصفحه و پاورقی نشان داده شود. تمام فیلدهای داده در طرح بندی با محتویات عددی مانند "Item 1" پر می شود تا موارد لیست تکراری نباشند.
به عنوان مثال:
<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 Layout Editor
این ویژگی به شما امکان میدهد به طرحبندی اشاره کنید که از این طرحبندی با استفاده از <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" />
اکنون پیشنمایش layout این طرح TextView
را همانطور که در طرحبندی activity_main
ظاهر میشود نشان میدهد.
tools:menu
در نظر گرفته شده برای: هر ریشه <View>
استفاده شده توسط: Android Studio Layout Editor
این ویژگی مشخص میکند که پیشنمایش طرحبندی کدام منو را در نوار برنامه نشان میدهد. مقدار یک یا چند شناسه منو است که با کاما از هم جدا شده اند، بدون @menu/
یا هر پیشوند ID مشابه و بدون پسوند .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 Layout Editor
این ویژگی ها حداقل و حداکثر مقادیر را برای نمای 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 Layout Editor
این ویژگی به شما امکان می دهد یک DrawerLayout
در پیش نمایش باز کنید.
همچنین میتوانید نحوه نمایش طرحبندی را با عبور دادن یکی از مقادیر زیر تغییر دهید:
ثابت | ارزش | توضیحات |
---|---|---|
end | 800005 | جسم را به انتهای ظرف فشار دهید، نه اینکه اندازه آن را تغییر دهید. |
left | 3 | جسم را به سمت چپ ظرف آن فشار دهید، نه اینکه اندازه آن را تغییر دهید. |
right | 5 | شی را به سمت راست ظرف آن فشار دهید، نه اینکه اندازه آن را تغییر دهید. |
start | 800003 | جسم را به ابتدای ظرفش فشار دهید، نه اینکه اندازه آن را تغییر دهید. |
به عنوان مثال:
<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/*"
در نظر گرفته شده برای: هر نمای که از متن یا تصاویر رابط کاربری پشتیبانی می کند
استفاده شده توسط: Android Studio Layout Editor
این ویژگی به شما امکان می دهد داده ها یا تصاویر مکان نگهدار را به نمای خود تزریق کنید. به عنوان مثال، برای آزمایش نحوه رفتار طرحبندی شما با متن قبل از اینکه متن رابط کاربری را برای برنامه خود نهایی کنید، میتوانید از متن مکاننما به صورت زیر استفاده کنید:
<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 | تصاویری که می توانید به عنوان پس زمینه استفاده کنید |
ویژگی های کوچک شدن منابع
ویژگی های زیر به شما امکان می دهد بررسی های دقیق مرجع را فعال کنید و اعلام کنید که آیا منابع خاصی را هنگام استفاده از کاهش منابع حفظ کنید یا صرف نظر کنید.
برای فعال کردن کوچک شدن منابع، ویژگی shrinkResources
را در فایل build.gradle
خود در کنار minifyEnabled
برای کوچک کردن کد، روی true
تنظیم کنید.
به عنوان مثال:
شیار
android { ... buildTypes { release { shrinkResources true minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } }
کاتلین
android { ... buildTypes { getByName("release") { isShrinkResources = true isMinifyEnabled = true proguardFiles( getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" ) } } }
tools:shrinkMode
در نظر گرفته شده برای: <resources>
استفاده شده توسط: ساخت ابزار با کاهش منابع
این ویژگی به شما امکان می دهد تعیین کنید که آیا ابزارهای ساخت باید از موارد زیر استفاده کنند یا خیر:
- حالت ایمن: تمام منابعی را که به صراحت ذکر شده اند و ممکن است به صورت پویا با فراخوانی به
Resources.getIdentifier()
ارجاع داده شوند، نگه دارید. - حالت سخت: فقط منابعی را نگه دارید که به صراحت در کد یا منابع دیگر ذکر شده اند.
پیش فرض استفاده از حالت ایمن ( shrinkMode="safe"
) است. به جای استفاده از حالت سخت، shrinkMode="strict"
همانطور که در اینجا نشان داده شده است به تگ <resources>
اضافه کنید:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:shrinkMode="strict" />
وقتی حالت سخت را فعال میکنید، ممکن است لازم باشد از tools:keep
برای حفظ منابعی که حذف شدهاند اما واقعاً میخواهید استفاده کنید، و از tools:discard
استفاده کنید تا به صراحت منابع بیشتری را حذف کنید.
برای اطلاعات بیشتر، به کوچک کردن منابع خود مراجعه کنید.
tools:keep
در نظر گرفته شده برای: <resources>
استفاده شده توسط: ساخت ابزار با کاهش منابع
هنگامی که از کاهش منابع برای حذف منابع استفاده نشده استفاده می کنید، این ویژگی به شما امکان می دهد منابعی را برای نگهداری مشخص کنید، معمولاً به این دلیل که در زمان اجرا به روشی غیرمستقیم ارجاع می شوند، مانند ارسال نام منبع تولید شده به صورت پویا به Resources.getIdentifier()
.
برای استفاده، یک فایل XML در فهرست منابع خود (به عنوان مثال، res/raw/keep.xml
) با تگ <resources>
ایجاد کنید و هر منبع را مشخص کنید تا در tools:keep
به عنوان یک لیست جدا شده با کاما نگهداری شود. می توانید از کاراکتر ستاره به عنوان کارت وحشی استفاده کنید.
به عنوان مثال:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:keep="@layout/used_1,@layout/used_2,@layout/*_3" />
برای اطلاعات بیشتر، به کوچک کردن منابع خود مراجعه کنید.
tools:discard
در نظر گرفته شده برای: <resources>
استفاده شده توسط: ساخت ابزار با کاهش منابع
هنگامی که از کاهش منابع برای حذف منابع استفاده نشده استفاده می کنید، این ویژگی به شما امکان می دهد منابعی را که می خواهید به صورت دستی صرف نظر کنید، مشخص کنید، معمولاً به این دلیل که منبع به آن ارجاع داده می شود اما به روشی که برنامه شما را تحت تأثیر قرار نمی دهد یا به دلیل اینکه افزونه Gradle به اشتباه استنباط کرده است که منبع به آن ارجاع داده شده است. .
برای استفاده، یک فایل XML در فهرست منابع خود (به عنوان مثال، res/raw/keep.xml
) با یک تگ <resources>
ایجاد کنید و هر منبع را برای حذف در ویژگی tools:discard
به عنوان یک لیست جدا شده با کاما مشخص کنید. می توانید از کاراکتر ستاره به عنوان کارت وحشی استفاده کنید.
به عنوان مثال:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:discard="@layout/unused_1" />
برای اطلاعات بیشتر، به کوچک کردن منابع خود مراجعه کنید.