C# と Xamarin Studio を使用して、Android アプリケーションで簡単なオプション メニューを作成したいと考えています。どうすればいいですか?
これの C# の例は見つかりませんでした。オプションメニューの作り方を簡単に教えてください。
C# と Xamarin Studio を使用して、Android アプリケーションで簡単なオプション メニューを作成したいと考えています。どうすればいいですか?
これの C# の例は見つかりませんでした。オプションメニューの作り方を簡単に教えてください。
メニューを作成する 1 つの方法は、Xamarin.Android プロジェクトの Resources/menu/ フォルダーに配置された XML ファイルを使用することです。
例えば:
リソース/メニュー/mymenu.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/item1"
android:title="Item 1"/>
<item android:id="@+id/item2"
android:title="Item 2"/>
<item android:id="@+id/item3"
android:title="Item 3"/>
</menu>
メニュー xml ファイルで定義できるその他のオプションについては、公式ドキュメントを参照してください。
複数の場所で xml メニューをインフレートできます。いくつかの例:
Android.Support.V7.Widget.Toolbar toolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.mytoolbar);
toolbar.InflateMenu(Resource.Menu.mymenu);
クリックを処理する
ツールバー メニューのクリック イベントを処理するにはToolbar.IOnMenuItemClickListener
、次のメソッドをオーバーライドしてインターフェイスを実装する必要があります。
public bool OnMenuItemClick(IMenuItem item)
{
switch (item.ItemId)
{
case Resource.Id.item1:
//Do stuff for item1
return true;
case Resource.Id.item2:
//Do stuff for item2
return true;
case Resource.Id.item3:
//Do stuff for item3
return true;
default:
return false;
}
}
次に、インターフェイスを実装するクラスをリスナーとしてツールバーに追加する必要があります。
toolbar.SetOnMenuItemClickListener(your_listener_class);
ほとんどの場合、アクティビティまたはフラグメントの既定のメニューの場所は、ハードウェア メニュー ボタンまたは ActionBar のいずれかです。ここにメニューを追加するには、次のメソッドをオーバーライドします。
アクティビティで:
public override bool OnCreateOptionsMenu(IMenu menu)
{
MenuInflater.Inflate(Resource.Menu.mymenu, menu);
return true;
}
フラグメント内:
public override void OnCreateOptionsMenu(IMenu menu, MenuInflater inflater)
{
inflater.Inflate(Resource.Menu.mymenu, menu);
}
HasOptionsMenu
これを機能させるには、フラグメントの onCreate で true に設定していることを確認してください。
クリックを処理する
その後、オーバーライドしてメニューへのクリックを処理できますOnOptionsItemSelected
public override bool OnOptionsItemSelected(IMenuItem item)
{
switch (item.ItemId)
{
case Resource.Id.item1:
//Do stuff for item1
return true;
case Resource.Id.item2:
//Do stuff for item2
return true;
case Resource.Id.item3:
//Do stuff for item3
return true;
default:
return false;
}
}
選択した項目を処理した後、true を返してシステムに通知します。
OnCreateOptionsMenu
非常に基本的なメニューは、次のようにメソッドをオーバーライドすることで実現されます。
public override bool OnCreateOptionsMenu(IMenu menu)
{
menu.Add(0,0,0,"Item 0");
menu.Add(0,1,1,"Item 1");
menu.Add(0,2,2,"Item 2");
return true;
}
その後、メソッドをオーバーライドすることで、オプション メニューのクリックを処理できますOnOptionsItemSelected
。
public override bool OnOptionsItemSelected(IMenuItem item)
{
switch (item.ItemId)
{
case 0:
//Do stuff for item 0
return true;
case 1:
//Do stuff for item 1
return true;
case 2:
//Do stuff for item 2
return true;
default:
return false;
}
}