Xamarin - Thực đơn
Menu bật lên
Menu bật lên đề cập đến menu được đính kèm với một dạng xem; nó cũng được gọi làshortcut menu. Hãy xem cách thêm menu bật lên vào Ứng dụng Android.
Tạo một dự án mới và gọi nó popUpMenu App. MởMain.axml và tạo một nút sẽ được sử dụng để hiển thị menu bật lên.
<?xml version = "1.0" encoding = "utf-8"?>
<LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
android:orientation = "vertical"
android:background = "#d3d3d3"
android:layout_width = "fill_parent"
android:layout_height = "fill_parent">
<Button
android:id = "@+id/popupButton"
android:layout_width = "fill_parent"
android:layout_height = "wrap_content"
android:text = "Show popup menu"
android:background = "@android:color/holo_green_dark"
android:textColor = "@android:color/black" />
</LinearLayout>
Tạo một thư mục mới trong Resources thư mục và gọi nó Menu. Bên trong thư mục Menu, thêm tệp xml mới có tênpopMenu.xml.
Dưới popMenu.xml, thêm các mục menu sau.
<?xml version = "1.0" encoding="utf-8"?>
<menu xmlns:android = "http://schemas.android.com/apk/res/android">
<item
android:id = "@+id/file_settings"
android:icon = "@drawable/img_settings"
android:title = "Settings"
android:showAsAction = "ifRoom">
<item
android:id = "@+id/new_game1"
android:icon = "@drawable/imgNew"
android:title = "New File Settings"/>
<item
android:id = "@+id/help"
android:icon = "@drawable/img_help"
android:title = "Help" />
<item
android:id = "@+id/about_app"
android:icon = "@drawable/img_help"
android:title = "About app"/>
</item>
</menu>
Sau khi thêm các mục menu, hãy chuyển đến mainActivity.cs để hiển thị menu bật lên khi nhấp vào nút.
protected override void OnCreate(Bundle bundle) {
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
Button showPopupMenu = FindViewById<Button>(Resource.Id.popupButton);
showPopupMenu.Click += (s, arg) => {
PopupMenu menu = new PopupMenu(this, showPopupMenu);
menu.Inflate(Resource.Menu.popMenu);
menu.Show();
};
}
Bây giờ, xây dựng và chạy ứng dụng của bạn. Nó sẽ tạo ra kết quả sau:
Menu Tùy chọn
Menu Tùy chọn là một tập hợp các menu chính của một Ứng dụng và chủ yếu được sử dụng để lưu trữ cài đặt, tìm kiếm, v.v. Ở đây, chúng ta sẽ tạo một menu cho cài đặt với ba mục bên trong, tức là New File Settings, Help, and About App.
Để tạo menu tùy chọn, chúng ta phải tạo một tệp bố cục XML mới trong thư mục tài nguyên. Trước hết, chúng tôi sẽ thêm một tệp XML mới. Nhấp chuột phải vàoLayout folder, sau đó đi đến Add → New item → Visual C# → XML File.
Chọn một tên thích hợp cho layout file. Trong ví dụ của chúng tôi, chúng tôi sẽ gọi tệp của chúng tôimyMenu.xml.
Phía trong myMenu.xml, chúng tôi sẽ tạo một menu mới và thêm các mục bên trong. Đoạn mã sau đây cho biết cách thực hiện.
<?xml version = "1.0" encoding = "utf-8"?>
<menu xmlns:android = "http://schemas.android.com/apk/res/android">
<item
android:id = "@+id/file_settings"
android:icon = "@drawable/img_settings"
android:title = "Settings"
android:showAsAction = "ifRoom">
<menu>
<item
android:id = "@+id/new_game1"
android:icon = "@drawable/imgNew"
android:title = "New File Settings" />
<item
android:id = "@+id/help"
android:icon = "@drawable/img_help"
android:title = "Help" />
<item
android:id = "@+id/about_app"
android:icon = "@drawable/img_help"
android:title = "About app"/>
</menu>
</item>
</menu>
Tiếp theo, chúng tôi điều hướng đến MainActivity.cs và tạo một lớp ghi đè cho onOptionsMenu().
public override bool OnCreateOptionsMenu(IMenu menu) {
MenuInflater.Inflate(Resource.Menu.myMenu, menu);
return base.OnPrepareOptionsMenu(menu);
}
Tiếp theo, chúng tôi tạo một hành động để phản hồi settings menukhi nó được chọn. Để làm điều này, chúng tôi tạo một lớp ghi đè khác choOnOptionsItemSelected() thực đơn.
public override bool OnOptionsItemSelected(IMenuItem item) {
if (item.ItemId == Resource.Id.file_settings) {
// do something here...
return true;
}
return base.OnOptionsItemSelected(item);
}
Mã hoàn chỉnh cuối cùng của chúng tôi sẽ trông như sau:
namespace optionsMenuApp {
[Activity(Label = "options Menu", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : Activity {
public override bool OnCreateOptionsMenu(IMenu menu) {
MenuInflater.Inflate(Resource.Menu.myMenu, menu);
return base.OnPrepareOptionsMenu(menu);
}
public override bool OnOptionsItemSelected(IMenuItem item) {
if (item.ItemId == Resource.Id.file_settings) {
// do something here...
return true;
}
return base.OnOptionsItemSelected(item);
}
}
}
Bây giờ, xây dựng và chạy ứng dụng của bạn. Nó sẽ tạo ra kết quả sau: