مرجع صفات ابزار

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 اضافه کنید تا متنی را فقط برای پیش‌نمایش طرح‌بندی مشخص کنید.

ویژگی tools:text Google Voice را به عنوان مقدار پیش نمایش طرح بندی تعیین می کند
شکل 1. ویژگی 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"  />

هنگام استفاده از Layout Editor در نمای طراحی، پنجره Properties به شما امکان می دهد برخی از ویژگی های نمای زمان طراحی را ویرایش کنید. هر ویژگی زمان طراحی با یک نماد آچار نشان داده شده است نماد آچار در کنار نام صفت برای تشخیص آن از ویژگی واقعی همان نام.

tools:context

در نظر گرفته شده برای: هر ریشه <View>

مورد استفاده: Lint، Android Studio Layout Editor

این ویژگی مشخص می کند که این طرح به طور پیش فرض با کدام فعالیت مرتبط است. این ویژگی‌ها را در ویرایشگر یا پیش‌نمایش طرح‌بندی فعال می‌کند که به دانش فعالیت نیاز دارد، مانند اینکه موضوع طرح‌بندی در پیش‌نمایش چیست و کجا باید کنترل‌کننده‌های onClick تولید شده از یک رفع سریع را وارد کنید، همانطور که در شکل 2 نشان داده شده است.

Quickfix برای ویژگی onClick فقط در صورتی کار می‌کند که tools:context را تنظیم کرده باشید
شکل 2. 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>

استفاده شده توسط: 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 در پیش نمایش باز کنید.

همچنین می‌توانید نحوه نمایش طرح‌بندی را با عبور دادن یکی از مقادیر زیر تغییر دهید:

جدول 1. مقادیری برای تغییر نحوه ارائه یک DrawerLayout توسط ویرایشگر Layout

ثابت ارزش توضیحات
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" />

جدول زیر انواع داده‌های متغیرهایی را که می‌توانید به طرح‌بندی‌های خود تزریق کنید، توضیح می‌دهد:

جدول 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 تصاویری که می توانید به عنوان پس زمینه استفاده کنید

ویژگی های کوچک شدن منابع

ویژگی های زیر به شما امکان می دهد بررسی های دقیق مرجع را فعال کنید و اعلام کنید که آیا منابع خاصی را هنگام استفاده از کاهش منابع حفظ کنید یا صرف نظر کنید.

برای فعال کردن کوچک شدن منابع، ویژگی 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" />

برای اطلاعات بیشتر، به کوچک کردن منابع خود مراجعه کنید.