Xamarin - Menu
Menu podręczne
Menu podręczne to menu dołączone do widoku; jest również określany jakoshortcut menu. Zobaczmy, jak dodać menu podręczne do aplikacji na Androida.
Utwórz nowy projekt i nazwij go popUpMenu App. otwartyMain.axml i utwórz przycisk, który będzie używany do wyświetlania menu podręcznego.
<?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>
Utwórz nowy folder w Resources folder i nazwij to Menu. W folderze Menu dodaj nowy plik xml o nazwiepopMenu.xml.
Pod popMenu.xmldodaj następujące pozycje menu.
<?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>
Po dodaniu pozycji menu przejdź do mainActivity.cs aby wyświetlić menu podręczne po kliknięciu przycisku.
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();
};
}
Teraz skompiluj i uruchom swoją aplikację. Powinien dać następujący wynik -
Menu opcji
Menu opcji to zbiór menu, które są podstawowymi dla aplikacji i są używane głównie do przechowywania ustawień, wyszukiwania itp. Tutaj utworzymy menu ustawień z trzema elementami w środku, tj. New File Settings, Help, and About App.
Aby utworzyć menu opcji, musimy utworzyć nowy plik układu XML w folderze zasobów. Przede wszystkim dodamy nowy plik XML. Kliknij prawym przyciskiem myszy plikLayout folder, następnie idź do Add → New item → Visual C# → XML File.
Wybierz odpowiednią nazwę dla layout file. W naszym przykładzie nazwiemy nasz plikmyMenu.xml.
Wewnątrz myMenu.xml, mamy zamiar stworzyć nowe menu i dodać pozycje wewnątrz. Poniższy kod pokazuje, jak to zrobić.
<?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>
Następnie przechodzimy do MainActivity.cs i utwórz klasę nadpisania dla onOptionsMenu().
public override bool OnCreateOptionsMenu(IMenu menu) {
MenuInflater.Inflate(Resource.Menu.myMenu, menu);
return base.OnPrepareOptionsMenu(menu);
}
Następnie tworzymy akcję odpowiadającą na plik settings menukiedy jest wybrany. Aby to zrobić, tworzymy kolejną klasę nadpisania dlaOnOptionsItemSelected() menu.
public override bool OnOptionsItemSelected(IMenuItem item) {
if (item.ItemId == Resource.Id.file_settings) {
// do something here...
return true;
}
return base.OnOptionsItemSelected(item);
}
Nasz ostateczny kompletny kod będzie wyglądał następująco -
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);
}
}
}
Teraz skompiluj i uruchom swoją aplikację. Powinien dać następujący wynik -