منبع چیدمان

منبع چیدمان معماری واسط کاربر را در Activity یا مؤلفه واسط کاربر تعریف می‌کند.

مکان فایل:
res/layout/filename.xml
نام فایل به‌عنوان شناسه منبع استفاده می‌شود.
نوع داده منبع کامپایل‌شده:
اشاره‌گر منبع به منبع View (یا زیرکلاس)
مرجع منبع:
در Java: R.layout.filename
در XML: @[package:]layout/filename
نحو:
<?xml version="1.0" encoding="utf-8"?>
<ViewGroup
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@[+][package:]id/resource_name"
    android:layout_height=["dimension" | "match_parent" | "wrap_content"]
    android:layout_width=["dimension" | "match_parent" | "wrap_content"]
    [ViewGroup-specific attributes] >
    <View
        android:id="@[+][package:]id/resource_name"
        android:layout_height=["dimension" | "match_parent" | "wrap_content"]
        android:layout_width=["dimension" | "match_parent" | "wrap_content"]
        [View-specific attributes] >
        <requestFocus/>
    </View>
    <ViewGroup >
        <View />
    </ViewGroup>
    <include layout="@layout/layout_resource"/>
</ViewGroup>

توجه: عنصر ریشه می‌تواند یک عنصر ViewGroup، View، یا <merge> باشد، اما فقط یک عنصر ریشه می‌تواند وجود داشته باشد و باید حاوی مشخصه xmlns:android با فضای نام android باشد، همان‌طور که در مثال نحو قبلی نشان داده شده است.

عناصر:
<ViewGroup>
محتوی عناصر View دیگر. انواع مختلفی از اشیای ViewGroup وجود دارد و هرکدام به شما امکان می‌دهد چیدمان عناصر فرزند را به روش‌های مختلفی مشخص کنید. انواع مختلف اشیاء ViewGroup شامل LinearLayout، RelativeLayout، و FrameLayout است.

فرض نکنید که هر مشتقی از ViewGroup نماهای تودرتو را می‌پذیرد. برخی‌از گروه‌های نما پیاده‌سازی‌های کلاس AdapterView هستند که فرزندان خود را فقط از Adapter تعیین می‌کند.

مشخصه ها:

android:id
شناسه منبع. نام منبع منحصربه‌فردی برای عنصر که می‌توانید از آن برای دریافت مرجع ViewGroup از برنامه‌تان استفاده کنید. برای اطلاعات بیشتر، به بخش مقدار android:id مراجعه کنید.
android:layout_height
بُعد یا کلیدواژه. الزامی. ارتفاع گروه، به‌عنوان مقدار بُعد (یا منبع بُعد) یا کلیدواژه ("match_parent" یا "wrap_content"). برای اطلاعات بیشتر، بخش مقادیر برای android:layout_height و android:layout_width را ببینید.
android:layout_width
بُعد یا کلیدواژه. الزامی. عرض گروه، به‌عنوان مقدار بُعد (یا منبع بُعد) یا کلیدواژه ("match_parent" یا "wrap_content"). برای اطلاعات بیشتر، به بخش مقادیر android:layout_height و android:layout_width مراجعه کنید.

کلاس پایه ViewGroup از مشخصه‌های بیشتری پشتیبانی می‌کند و هر پیاده‌سازی ViewGroup از مشخصه‌های بسیار بیشتری پشتیبانی می‌کند. برای مرجع همه مشخصه‌های دردسترس، اسناد مرجع مربوطه را برای کلاس ViewGroup ببینید، برای مثال، مشخصه‌های XML LinearLayout.

<View>
یک مؤلفه واسط کاربر مجزا که معمولاً به آن ابزاره می‌گویند. انواع مختلف اشیای View شامل TextView، Button، و CheckBox می‌شود.

مشخصه ها:

android:id
شناسه منبع. نام منبع منحصربه‌فردی برای عنصر، که می‌توانید از آن برای دریافت مرجع View از برنامه‌تان استفاده کنید. برای اطلاعات بیشتر، به بخش مقدار android:id مراجعه کنید.
android:layout_height
بُعد یا کلیدواژه. الزامی. ارتفاع عنصر، به‌عنوان مقدار بُعد (یا منبع بُعد) یا کلیدواژه ("match_parent" یا "wrap_content"). برای اطلاعات بیشتر، به بخش مقادیر android:layout_height و android:layout_width مراجعه کنید.
android:layout_width
بُعد یا کلیدواژه. الزامی. عرض عنصر، به‌عنوان مقدار بُعد (یا منبع بُعد) یا کلیدواژه ("match_parent" یا "wrap_content"). برای اطلاعات بیشتر، بخش مقادیر android:layout_height و android:layout_width را ببینید.

کلاس پایه View از مشخصه‌های بیشتری پشتیبانی می‌کند و هر پیاده‌سازی View از مشخصه‌های بسیار بیشتری پشتیبانی می‌کند. برای اطلاعات بیشتر، چیدمان‌ها را بخوانید. برای مرجع همه مشخصه‌های دردسترس، اسناد مرجع مربوطه را ببینید، برای مثال، مشخصه‌های XMLTextView.

<requestFocus>
هر عنصری که نشان‌دهنده شیء View باشد می‌تواند شامل این عنصر خالی باشد، که به والد آن تمرکز اولیه روی صفحه‌نمایش می‌دهد. فقط می‌توانید یکی از این عناصر را در هر فایل داشته باشید.
<include>
فایل چیدمانی را در این چیدمان لحاظ می‌کند.

مشخصه ها:

layout
منبع چیدمان. الزامی. ارجاع به منبع چیدمان.
android:id
شناسه منبع. شناسه داده‌شده به نمای ریشه را در طرح‌بندی گنجانده‌شده لغو می‌کند.
android:layout_height
بُعد یا کلیدواژه. ارتفاع داده‌شده به نمای ریشه را در چیدمان گنجانده‌شده لغو می‌کند. فقط درصورتی مؤثر است که android:layout_width نیز اعلام شده باشد.
android:layout_width
بُعد یا کلیدواژه. عرض داده‌شده به نمای ریشه را در چیدمان گنجانده‌شده لغو می‌کند. فقط درصورتی مؤثر است که android:layout_height نیز اعلام شده باشد.

می‌توانید هر مشخصه چیدمان دیگری را در <include> که توسط عنصر ریشه در چیدمان گنجانده‌شده پشتیبانی می‌شود اضافه کنید و این مشخصه‌ها جایگزین مشخصه‌های تعریف‌شده در عنصر ریشه می‌شوند.

احتیاط: اگر می‌خواهید مشخصه‌های چیدمان را بااستفاده از برچسب <include> لغو کنید، باید هم android:layout_height و هم android:layout_width را لغو کنید تا سایر مشخصه‌های چیدمان اعمال شوند.

روش دیگر برای گنجاندن چیدمان استفاده از ViewStub است: نمای سبکی که هیچ فضای چیدمانی را مصرف نمی‌کند تا زمانی که صریحاً آن را گسترش دهید. وقتی این کار را انجام می‌دهید، شامل یک فایل چیدمان است که با مشخصه android:layout آن تعریف می‌شود. برای اطلاعات بیشتر درباره استفاده از ViewStub، بار کردن نماها به‌درخواست را بخوانید.

<merge>
عنصر ریشه جایگزینی که در سلسله‌مراتب چیدمان ترسیم نشده است. استفاده از این به‌عنوان عنصر ریشه زمانی مفید است که می‌دانید این چیدمان در چیدمانی قرار می‌گیرد که ازقبل حاوی View والد مناسب برای دربرگرفتن فرزندان عنصر <merge> است.

این به‌ویژه زمانی مفید است که قصد دارید این چیدمان را بااستفاده از <include> در فایل چیدمان دیگری قرار دهید و این چیدمان به محفظه ViewGroup دیگری نیاز ندارد. برای کسب اطلاعات بیشتر درباره ادغام کردن چیدمان‌ها، استفاده مجدد از چیدمان‌ها با <include> را بخوانید.

مقدار android:id

برای مقدار شناسه، معمولاً از این قالب نحوی استفاده می‌کنید: "@+id/name"، همان‌طور که در مثال زیر نشان داده شده است. نماد مثبت، +، نشان می‌دهد که این شناسه منبع جدیدی است و ابزار aapt عدد صحیح منبع جدیدی در کلاس R.java ایجاد می‌کند، اگر ازقبل وجود نداشته باشد.

<TextView android:id="@+id/nameTextbox"/>

نام nameTextbox اکنون شناسه منبعی است که به این عنصر پیوست شده است. سپس می‌توانید به TextView که شناسه با آن در Java مرتبط است مراجعه کنید:

کاتلین

val textView: TextView? = findViewById(R.id.nameTextbox)

جاوا

TextView textView = findViewById(R.id.nameTextbox);

این کد شیء TextView را برمی‌گرداند.

بااین‌حال، اگر قبلاً منبع شناسه تعریف کرده‌اید و هنوز از آن استفاده نشده است، می‌توانید آن شناسه را با حذف علامت جمع در مقدار android:id به عنصر View اعمال کنید.

مقادیر android:layout_height و android:layout_width

مقادیر ارتفاع و عرض بااستفاده از هریک از واحدهای بُعد پشتیبانی‌شده توسط Android (px،‏ dp،‏ sp،‏ pt،‏ in،‏ mm) یا با کلیدواژه‌های زیر بیان می‌شوند:

مقدارشرح
match_parent بعد را طوری تنظیم می‌کند که با بعد عنصر ولی مطابقت داشته باشد. در سطح میانای برنامه‌سازی کاربردی ۸ اضافه شد تا fill_parent را منسوخ کند.
wrap_content بُعد را فقط به اندازه‌ای تنظیم می‌کند که برای گنجاندن محتوای این عنصر لازم است.

عناصر نمای سفارشی

می‌توانید عناصر View و ViewGroup سفارشی ایجاد کنید و آن‌ها را مانند عنصر چیدمان استاندارد در چیدمانتان اعمال کنید. همچنین می‌توانید مشخصه‌های پشتیبانی‌شده در عنصر XML را مشخص کنید. برای اطلاعات بیشتر، ایجاد مؤلفه‌های نمای سفارشی را ببینید.

مثال:
فایل XML در res/layout/main_activity.xml ذخیره شد:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical" >
    <TextView android:id="@+id/text"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="Hello, I am a TextView" />
    <Button android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello, I am a Button" />
</LinearLayout>

این کد برنامه، چیدمان Activity را در روش onCreate() بار می‌کند:

کاتلین

public override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.main_activity)
}

جاوا

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_activity);
}
همچنین ببینید: