یک منبع طرحبندی، معماری UI را در یک Activity
یا جزء یک UI تعریف میکند.
- محل فایل:
-
res/layout/ filename .xml
نام فایل به عنوان شناسه منبع استفاده می شود. - نوع داده منبع کامپایل شده:
- اشاره گر منبع به یک منبع
View
(یا زیر کلاس). - مرجع منبع:
- در جاوا:
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
نماهای تودرتو را می پذیرد. برخی از گروههای view پیادهسازیهای کلاس AdapterView
هستند که فرزندان خود را فقط از یک Adapter
تعیین میکنند.
ویژگی ها:
-
android:id
- شناسه منبع یک نام منبع منحصربهفرد برای عنصر، که میتوانید از آن برای دریافت ارجاع به
ViewGroup
از برنامه خود استفاده کنید. برای اطلاعات بیشتر به بخش Value for android:id مراجعه کنید. -
android:layout_height
- بعد یا کلمه کلیدی . مورد نیاز . ارتفاع برای گروه، به عنوان یک مقدار بعد (یا منبع بعد ) یا یک کلمه کلیدی (
"match_parent"
یا "wrap_content"
). برای اطلاعات بیشتر، به بخش Values for android:layout_height و android:layout_width مراجعه کنید. -
android:layout_width
- بعد یا کلمه کلیدی . مورد نیاز . عرض گروه، به عنوان یک مقدار ابعاد (یا منبع بعد ) یا یک کلمه کلیدی (
"match_parent"
یا "wrap_content"
). برای اطلاعات بیشتر، به بخش Values for android:layout_height و android:layout_width مراجعه کنید.
کلاس پایه ViewGroup
از ویژگی های بیشتری پشتیبانی می کند و بسیاری دیگر توسط هر پیاده سازی ViewGroup
پشتیبانی می شود. برای ارجاع همه ویژگیهای موجود، به مستندات مرجع مربوطه برای کلاس ViewGroup
، برای مثال، ویژگیهای LinearLayout
XML مراجعه کنید.
-
<View>
- یک مؤلفه UI مجزا که معمولاً به عنوان ویجت نامیده می شود. انواع مختلف اشیاء
View
عبارتند از TextView
، Button
و CheckBox
. ویژگی ها:
-
android:id
- شناسه منبع یک نام منبع منحصربهفرد برای عنصر، که میتوانید از آن برای دریافت ارجاع به
View
از برنامه خود استفاده کنید. برای اطلاعات بیشتر به بخش Value for android:id مراجعه کنید. -
android:layout_height
- بعد یا کلمه کلیدی . مورد نیاز . ارتفاع عنصر، به عنوان یک مقدار ابعاد (یا منبع بعد ) یا یک کلمه کلیدی (
"match_parent"
یا "wrap_content"
). برای اطلاعات بیشتر، به بخش Values for android:layout_height و android:layout_width مراجعه کنید. -
android:layout_width
- بعد یا کلمه کلیدی . مورد نیاز . عرض عنصر، به عنوان یک مقدار ابعاد (یا منبع ابعاد ) یا یک کلمه کلیدی (
"match_parent"
یا "wrap_content"
). برای اطلاعات بیشتر، به بخش Values for android:layout_height و android:layout_width مراجعه کنید.
کلاس پایه View
از ویژگی های بیشتری پشتیبانی می کند و بسیاری دیگر توسط هر پیاده سازی View
پشتیبانی می شوند. برای اطلاعات بیشتر، Layouts را بخوانید. برای مرجعی از تمام ویژگیهای موجود، به مستندات مرجع مربوطه، به عنوان مثال، ویژگیهای TextView
XML مراجعه کنید.
-
<requestFocus>
- هر عنصری که یک شی
View
نشان میدهد میتواند شامل این عنصر خالی باشد که تمرکز اولیه والد آن را روی صفحه نمایش میدهد. شما می توانید تنها یکی از این عناصر را در هر فایل داشته باشید. -
<include>
- شامل یک فایل طرح بندی در این طرح بندی است.
ویژگی ها:
-
layout
- منبع چیدمان مورد نیاز . ارجاع به یک منبع طرح بندی.
-
android:id
- شناسه منبع شناسه داده شده به نمای ریشه در طرح بندی ارائه شده را لغو می کند.
-
android:layout_height
- بعد یا کلمه کلیدی . ارتفاع داده شده به نمای ریشه در طرح بندی ارائه شده را لغو می کند. فقط در صورتی موثر است که
android:layout_width
نیز اعلام شده باشد. -
android:layout_width
- بعد یا کلمه کلیدی . عرض داده شده به نمای ریشه در طرح بندی ارائه شده را لغو می کند. فقط در صورتی موثر است که
android:layout_height
نیز اعلام شده باشد.
میتوانید هر ویژگی طرحبندی دیگری را در <include>
که توسط عنصر ریشه در طرحبندی موجود پشتیبانی میشود، اضافه کنید و آنها را باطل میکنند که در عنصر ریشه تعریف شدهاند.
احتیاط: اگر میخواهید با استفاده از تگ <include>
ویژگیهای layout را لغو کنید، باید هر دو android:layout_height
و android:layout_width
را لغو کنید تا سایر ویژگیهای طرحبندی اعمال شوند.
راه دیگر برای گنجاندن یک طرح، استفاده از ViewStub
است: یک نمای سبک وزن که تا زمانی که به صراحت آن را زیاد نکنید، فضای طرح بندی را مصرف نمی کند. وقتی این کار را انجام می دهید، شامل یک فایل طرح بندی است که با ویژگی android:layout
آن تعریف شده است. برای اطلاعات بیشتر در مورد استفاده از ViewStub
، بارگذاری نماهای درخواستی را بخوانید.
-
<merge>
- یک عنصر ریشه جایگزین که در سلسله مراتب طرح بندی ترسیم نشده است. استفاده از آن به عنوان عنصر ریشه زمانی مفید است که می دانید این طرح بندی در طرحی قرار داده شده است که از قبل حاوی
View
والد مناسب برای حاوی فرزندان عنصر <merge>
است. این به ویژه زمانی مفید است که میخواهید این طرحبندی را با استفاده از <include>
در فایل طرحبندی دیگری قرار دهید و این طرحبندی به محفظه ViewGroup
دیگری نیاز ندارد. برای اطلاعات بیشتر درباره ادغام طرحبندیها، استفاده مجدد از طرحبندیها را با <include> بخوانید.
ارزش برای android:id
برای مقدار ID، شما معمولاً از این فرم نحوی استفاده می کنید: "@+id/ name "
، همانطور که در مثال زیر نشان داده شده است. نماد مثبت، +
، نشان می دهد که این یک شناسه منبع جدید است، و ابزار aapt
یک عدد صحیح منبع جدید در کلاس R.java
ایجاد می کند، اگر قبلا وجود نداشته باشد.
<TextView android:id="@+id/nameTextbox"/>
نام nameTextbox
اکنون یک شناسه منبع متصل به این عنصر است. سپس می توانید به TextView
که شناسه در جاوا به آن مرتبط است مراجعه کنید:
کاتلین
val textView: TextView? = findViewById(R.id.nameTextbox)
جاوا
TextView textView = findViewById(R.id.nameTextbox);
این کد شی TextView
را برمی گرداند.
با این حال، اگر قبلاً یک منبع ID تعریف کردهاید، و قبلاً از آن استفاده نشده است، میتوانید با حذف نماد مثبت در مقدار android:id
آن شناسه را به عنصر View
اعمال کنید.
مقادیر برای android:layout_height و android:layout_width
مقادیر ارتفاع و عرض با استفاده از هر یک از واحدهای ابعاد پشتیبانی شده توسط Android (px، dp، sp، pt، in، mm) یا با کلمات کلیدی زیر بیان میشوند:
ارزش | توضیحات |
---|
match_parent | ابعاد را مطابق با بعد عنصر والد تنظیم می کند. در API سطح 8 برای منسوخ کردن 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);
}
- همچنین ببینید: