Xamarin-menus
Xamarin-メニュー
ポップアップメニュー
ポップアップメニューとは、ビューに添付されているメニューのことです。 *ショートカットメニュー*とも呼ばれます。 Androidアプリにポップアップメニューを追加する方法を見てみましょう。
新しいプロジェクトを作成し、 popUpMenu App と呼びます。 Main.axml を開き、ポップアップメニューを表示するために使用するボタンを作成します。
<?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>
*Resources* フォルダーの下に新しいフォルダーを作成し、 *Menu* と呼びます。 Menuフォルダー内に、 *popMenu.xml* という新しいxmlファイルを追加します。
*popMenu.xml* で、次のメニュー項目を追加します。
<?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>
メニュー項目を追加したら、 mainActivity.cs に移動して、ボタンのクリック時にポップアップメニューを表示します。
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();
};
}
次に、アプリケーションをビルドして実行します。 それは次の出力を生成する必要があります-
オプションメニュー
オプションメニューは、アプリの主要なメニューのコレクションであり、主に設定の保存、検索などに使用されます。 ここでは、3つの項目、つまり*新しいファイル設定、ヘルプ、およびアプリについて*を含む設定のメニューを作成します。
オプションメニューを作成するには、リソースフォルダーに新しいXMLレイアウトファイルを作成する必要があります。 まず、新しいXMLファイルを追加します。 *レイアウトフォルダー*を右クリックし、*追加→新規アイテム→Visual C#→XMLファイル*に移動します。
レイアウトファイル*に適切な名前を選択します。 この例では、ファイル *myMenu.xml を呼び出します。
*myMenu.xml* 内で、新しいメニューを作成し、内部にアイテムを追加します。 次のコードは、その方法を示しています。
<?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>
次に、 MainActivity.cs に移動し、* onOptionsMenu()*のオーバーライドクラスを作成します。
public override bool OnCreateOptionsMenu(IMenu menu) {
MenuInflater.Inflate(Resource.Menu.myMenu, menu);
return base.OnPrepareOptionsMenu(menu);
}
次に、設定メニュー*が選択されたときに応答するアクションを作成します。 これを行うには、 OnOptionsItemSelected()*メニューの別のオーバーライドクラスを作成します。
public override bool OnOptionsItemSelected(IMenuItem item) {
if (item.ItemId == Resource.Id.file_settings) {
//do something here...
return true;
}
return base.OnOptionsItemSelected(item);
}
最終的な完全なコードは次のようになります-
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);
}
}
}
次に、アプリケーションをビルドして実行します。 それは次の出力を生成する必要があります-