Xamarin-menus

提供:Dev Guides
移動先:案内検索

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);
      }
   }
}

次に、アプリケーションをビルドして実行します。 それは次の出力を生成する必要があります-

新しいファイル設定