یک منبع منو یک منوی برنامه را تعریف می کند - یک منوی گزینه ها، منوی زمینه، یا زیرمنو - که می تواند با MenuInflater
پر شود.
برای راهنمای استفاده از منوها، به افزودن منوها مراجعه کنید.
- محل فایل:
-
res/menu/ filename .xml
نام فایل به عنوان شناسه منبع استفاده می شود - نوع داده منبع کامپایل شده:
- اشاره گر منبع به یک منبع
Menu
(یا زیر کلاس). - مرجع منبع:
- در جاوا:
R.menu. filename
در @[ package :]menu. filename
- نحو:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@[+][package:]id/resource_name"
android:title="string"
android:titleCondensed="string"
android:icon="@[package:]drawable/drawable_resource_name"
android:onClick="method name"
android:showAsAction=["ifRoom" | "never" | "withText" | "always" | "collapseActionView"]
android:actionLayout="@[package:]layout/layout_resource_name"
android:actionViewClass="class name"
android:actionProviderClass="class name"
android:alphabeticShortcut="string"
android:alphabeticModifiers=["META" | "CTRL" | "ALT" | "SHIFT" | "SYM" | "FUNCTION"]
android:numericShortcut="string"
android:numericModifiers=["META" | "CTRL" | "ALT" | "SHIFT" | "SYM" | "FUNCTION"]
android:checkable=["true" | "false"]
android:visible=["true" | "false"]
android:enabled=["true" | "false"]
android:menuCategory=["container" | "system" | "secondary" | "alternative"]
android:orderInCategory="integer" />
<group android:id="@[+][package:]id/resource name"
android:checkableBehavior=["none" | "all" | "single"]
android:visible=["true" | "false"]
android:enabled=["true" | "false"]
android:menuCategory=["container" | "system" | "secondary" | "alternative"]
android:orderInCategory="integer" >
<item />
</group>
<item >
<menu>
<item />
</menu>
</item>
</menu>
- عناصر:
- مورد نیاز. این باید گره ریشه باشد. حاوی عناصر
<item>
و/یا <group>
است. ویژگی ها:
-
xmlns:android
- فضای نام XML . مورد نیاز. فضای نام XML را تعریف می کند که باید
"http://schemas.android.com/apk/res/android"
باشد.
-
<item>
- یک آیتم منو ممکن است حاوی یک عنصر
<menu>
باشد (برای یک زیر منو). باید فرزند یک عنصر <menu>
یا <group>
باشد. ویژگی ها:
-
android:id
- شناسه منبع شناسه منبع منحصر به فرد برای ایجاد یک شناسه منبع جدید برای این مورد، از فرم
"@+id/ name "
استفاده کنید. علامت مثبت نشان می دهد که این به عنوان یک شناسه جدید ایجاد شده است. -
android:title
- منبع رشته عنوان منو به عنوان یک منبع رشته یا رشته خام.
-
android:titleCondensed
- منبع رشته عنوان فشرده به عنوان یک منبع رشته یا یک رشته خام. این عنوان برای موقعیتهایی استفاده میشود که عنوان عادی خیلی طولانی است.
-
android:icon
- منبع قابل ترسیم تصویری که به عنوان نماد آیتم منو استفاده می شود.
-
android:onClick
- نام روش . روشی برای تماس با کلیک روی این آیتم منو. روش باید در فعالیت به عنوان عمومی اعلام شود. یک
MenuItem
به عنوان تنها پارامتر خود می پذیرد که نشان می دهد روی مورد کلیک شده است. این روش بر فراخوانی استاندارد به onOptionsItemSelected()
اولویت دارد. مثال را در انتهای این صفحه ببینید. هشدار: اگر کد خود را با استفاده از ProGuard یا ابزاری مشابه مبهم میکنید، مطمئن شوید که روشی را که در این ویژگی مشخص کردهاید از تغییر نام حذف کنید، زیرا میتواند عملکرد را خراب کند.
در سطح 11 API معرفی شده است.
-
android:showAsAction
- کلمه کلیدی چه زمانی و چگونه این مورد به عنوان یک مورد عمل در نوار برنامه ظاهر می شود. یک آیتم منو فقط زمانی می تواند به عنوان یک آیتم اقدام ظاهر شود که فعالیت شامل نوار برنامه باشد. مقادیر معتبر:
ارزش | توضیحات |
---|
ifRoom | این مورد را فقط در صورتی در نوار برنامه قرار دهید که جایی برای آن وجود دارد. اگر فضایی برای همه موارد با علامت "ifRoom" وجود نداشته باشد، موارد با کمترین مقدار orderInCategory به عنوان کنش نمایش داده می شوند و موارد باقی مانده در منوی سرریز نمایش داده می شوند. |
withText | همچنین متن عنوان (تعریف شده توسط android:title ) را با آیتم اقدام اضافه کنید. می توانید این مقدار را به همراه یکی از موارد دیگر به عنوان یک مجموعه پرچم با جدا کردن آنها با یک لوله | وارد کنید . |
never | هرگز این مورد را در نوار برنامه قرار ندهید. در عوض، مورد را در منوی سرریز نوار برنامه فهرست کنید. |
always | همیشه این مورد را در نوار برنامه قرار دهید. از استفاده از آن خودداری کنید، مگر اینکه مهم باشد که آیتم همیشه در نوار اقدام ظاهر شود. تنظیم چندین مورد بهگونهای که همیشه بهعنوان موارد اقدام ظاهر شوند، میتواند منجر به همپوشانی آنها با سایر رابطهای کاربری در نوار برنامه شود. |
collapseActionView | نمای اقدام مرتبط با این آیتم کنشی (همانطور که توسط android:actionLayout یا android:actionViewClass اعلام شده) قابل جمع شدن است. در سطح 14 API معرفی شده است. |
برای اطلاعات بیشتر به افزودن نوار برنامه مراجعه کنید.
در سطح 11 API معرفی شده است.
-
android:actionLayout
- منبع چیدمان یک طرح برای استفاده به عنوان نمای عمل.
برای اطلاعات بیشتر، به استفاده از نماهای اقدام و ارائه دهندگان اقدام مراجعه کنید.
در سطح 11 API معرفی شده است.
-
android:actionViewClass
- نام کلاس . یک نام کلاس کاملاً واجد شرایط برای
View
برای استفاده به عنوان نمای عمل. به عنوان مثال، "android.widget.SearchView"
برای استفاده از SearchView
به عنوان نمای اقدام. برای اطلاعات بیشتر، به استفاده از نماهای اقدام و ارائه دهندگان اقدام مراجعه کنید.
هشدار: اگر کد خود را با استفاده از ProGuard یا ابزاری مشابه مبهم میکنید، حتماً کلاسی را که در این ویژگی مشخص کردهاید از تغییر نام حذف کنید، زیرا میتواند عملکرد را خراب کند.
در سطح 11 API معرفی شده است.
-
android:actionProviderClass
- نام کلاس . یک نام کلاس کاملاً واجد شرایط برای
ActionProvider
که به جای آیتم اقدام استفاده شود. به عنوان مثال، "android.widget.ShareActionProvider"
برای استفاده از ShareActionProvider
. برای اطلاعات بیشتر، به استفاده از نماهای اقدام و ارائه دهندگان اقدام مراجعه کنید.
هشدار: اگر کد خود را با استفاده از ProGuard یا ابزاری مشابه مبهم میکنید، حتماً کلاسی را که در این ویژگی مشخص کردهاید از تغییر نام حذف کنید، زیرا میتواند عملکرد را خراب کند.
در سطح 14 API معرفی شده است.
-
android:alphabeticShortcut
- چار . یک کاراکتر برای کلید میانبر الفبایی.
-
android:numericShortcut
- عدد صحیح عددی برای کلید میانبر عددی.
-
android:alphabeticModifiers
- کلمه کلیدی یک اصلاح کننده برای میانبر الفبایی آیتم های منو. مقدار پیش فرض مربوط به کلید Control است. مقادیر معتبر:
ارزش | توضیحات |
---|
META | مربوط به کلید متا است. |
CTRL | مربوط به کلید متا Control است. |
ALT | مربوط به کلید متا Alt است. |
SHIFT | مربوط به کلید متا Shift است. |
SYM | مربوط به کلید متا Sym است. |
تابع | مربوط به کلید متا Function است. |
توجه : می توانید چندین کلمه کلیدی را در یک ویژگی مشخص کنید. به عنوان مثال، android:alphabeticModifiers="CTRL|SHIFT"
نشان می دهد که برای فعال کردن آیتم منوی مربوطه، کاربر باید هر دو کلید متا Control و Shift را به همراه میانبر فشار دهد.
شما می توانید از متد setAlphabeticShortcut()
برای تنظیم مقادیر مشخصه به صورت برنامه ای استفاده کنید. برای اطلاعات بیشتر در مورد ویژگی alphabeticModifier
، alphabeticModifiers
را ببینید.
-
android:numericModifiers
- کلمه کلیدی یک اصلاح کننده برای میانبر عددی آیتم منو. مقدار پیش فرض مربوط به کلید Control است. مقادیر معتبر:
ارزش | توضیحات |
---|
متا | مربوط به کلید متا است. |
CTRL | مربوط به کلید متا Control است. |
ALT | مربوط به کلید متا Alt است. |
SHIFT | مربوط به کلید متا Shift است. |
SYM | مربوط به کلید متا Sym است. |
تابع | مربوط به کلید متا Function است. |
توجه : می توانید چندین کلمه کلیدی را در یک ویژگی مشخص کنید. به عنوان مثال، android:numericModifiers="CTRL|SHIFT"
نشان می دهد که برای فعال کردن آیتم منوی مربوطه، کاربر باید هر دو کلید متا Control و Shift را به همراه میانبر فشار دهد.
شما می توانید از متد setNumericShortcut()
برای تنظیم مقادیر مشخصه به صورت برنامه ای استفاده کنید. برای اطلاعات بیشتر در مورد ویژگی numericModifier
، numericModifiers
را ببینید.
-
android:checkable
- بولی . اگر مورد قابل بررسی باشد درست است.
-
android:checked
- بولی . اگر مورد به طور پیشفرض علامت زده شود درست است.
-
android:visible
- بولی . درست است اگر مورد به طور پیش فرض قابل مشاهده باشد.
-
android:enabled
- بولی . اگر مورد به طور پیش فرض فعال باشد درست است.
-
android:menuCategory
- کلمه کلیدی مقدار مربوط به ثابت های
Menu
CATEGORY_*
، که اولویت مورد را تعیین می کند. مقادیر معتبر: ارزش | توضیحات |
---|
container | برای اقلامی که بخشی از یک ظرف هستند. |
system | برای مواردی که توسط سیستم ارائه می شود. |
secondary | برای مواردی که گزینههای ثانویه (که به ندرت استفاده میشوند) توسط کاربر ارائه میشوند. |
alternative | برای مواردی که اقدامات جایگزین روی دادههایی هستند که در حال حاضر نمایش داده میشوند. |
-
android:orderInCategory
- عدد صحیح ترتیب اهمیت آیتم در یک گروه.
-
<group>
- یک گروه منو، برای ایجاد مجموعهای از آیتمهایی که ویژگیهای مشترک دارند، مانند قابل مشاهده بودن، فعال بودن یا انتخاب شدنی بودن. حاوی یک یا چند عنصر
<item>
است. باید فرزند یک عنصر <menu>
باشد. ویژگی ها:
-
android:id
- شناسه منبع شناسه منبع منحصر به فرد برای ایجاد یک شناسه منبع جدید برای این مورد، از فرم
"@+id/ name "
استفاده کنید. علامت مثبت نشان می دهد که این به عنوان یک شناسه جدید ایجاد شده است. -
android:checkableBehavior
- کلمه کلیدی نوع رفتار قابل انتخاب برای گروه. مقادیر معتبر:
ارزش | توضیحات |
---|
none | قابل انتخاب نیست |
all | همه موارد را می توان انتخاب کرد (از چک باکس ها استفاده کنید). |
single | فقط یک مورد را می توان انتخاب کرد (از دکمه های رادیویی استفاده کنید). |
-
android:visible
- بولی . اگر گروه قابل مشاهده باشد درست است.
-
android:enabled
- بولی . اگر گروه فعال باشد درست است.
-
android:menuCategory
- کلمه کلیدی مقدار مربوط به ثابت های
Menu
CATEGORY_*
که اولویت گروه را مشخص می کند. مقادیر معتبر: ارزش | توضیحات |
---|
container | برای گروه هایی که بخشی از یک ظرف هستند. |
system | برای گروه هایی که توسط سیستم ارائه می شود. |
secondary | برای گروه هایی که گزینه های ثانویه (که به ندرت استفاده می شوند) توسط کاربر ارائه می شوند. |
alternative | برای گروه هایی که اقدامات جایگزین روی داده هایی هستند که در حال حاضر نمایش داده می شوند. |
-
android:orderInCategory
- عدد صحیح ترتیب پیشفرض اقلام در دسته.
- مثال:
- فایل XML ذخیره شده در
res/menu/example_menu.xml
:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/item1"
android:title="@string/item1"
android:icon="@drawable/group_item1_icon"
app:showAsAction="ifRoom|withText"/>
<group android:id="@+id/group">
<item android:id="@+id/group_item1"
android:onClick="onGroupItemClick"
android:title="@string/group_item1"
android:icon="@drawable/group_item1_icon" />
<item android:id="@+id/group_item2"
android:onClick="onGroupItemClick"
android:title="@string/group_item2"
android:icon="@drawable/group_item2_icon" />
</group>
<item android:id="@+id/submenu"
android:title="@string/submenu_title"
app:showAsAction="ifRoom|withText" >
<menu>
<item android:id="@+id/submenu_item1"
android:title="@string/submenu_item1" />
</menu>
</item>
</menu>
کد برنامه زیر منو را از پاسخ به تماس onCreateOptionsMenu(Menu)
پر می کند و همچنین پاسخ تماس با کلیک را برای دو مورد از موارد اعلام می کند:
کاتلین
override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.example_menu, menu)
return true
}
fun onGroupItemClick(item: MenuItem) {
// One of the group items (using the onClick attribute) was clicked.
// The item parameter passed here indicates which item it is.
// All other menu item clicks are handled by Activity.onOptionsItemSelected.
}
جاوا
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.example_menu, menu);
return true;
}
public void onGroupItemClick(MenuItem item) {
// One of the group items (using the onClick attribute) was clicked.
// The item parameter passed here indicates which item it is.
// All other menu item clicks are handled by Activity.onOptionsItemSelected.
}