gpt4 book ai didi

c# - 如何在android中创建一个选项菜单?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:32:42 27 4
gpt4 key购买 nike

我想使用 C# 和 Xamarin Studio 在 Android 应用程序中创建一个简单的选项菜单。我该怎么做?

我还没有找到这方面的任何 C# 示例。有人可以简单地解释一下如何创建选项菜单吗?

最佳答案

定义菜单

创建菜单的一种方法是使用放置在 Xamarin.Android 项目的 Resources/menu/文件夹中的 XML 文件。

例如:

Resources/Menu/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 文件中定义哪些其他选项,请参阅 the official documentation .

使用菜单

您可以在多个位置扩充 xml 菜单。几个例子:

在工具栏中

Android.Support.V7.Widget.Toolbar toolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.mytoolbar);
toolbar.InflateMenu(Resource.Menu.mymenu);

处理点击

要处理工具栏菜单上的点击事件,您必须通过覆盖以下方法来实现 Toolbar.IOnMenuItemClickListener 接口(interface):

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

然后您必须将实现接口(interface)的类作为监听器添加到工具栏:

toolbar.SetOnMenuItemClickListener(your_listener_class);

在 Activity 或 Fragment 的默认菜单位置(已弃用)

在大多数情况下, Activity 或 fragment 的默认菜单位置是硬件菜单按钮或 ActionBar。可以通过覆盖以下方法在此处添加菜单:

在 Activity 中:

public override bool OnCreateOptionsMenu(IMenu menu)
{
MenuInflater.Inflate(Resource.Menu.mymenu, menu);
return true;
}

在 fragment 中:

public override void OnCreateOptionsMenu(IMenu menu, MenuInflater inflater)
{
inflater.Inflate(Resource.Menu.mymenu, menu);
}

确保在 fragment 的 onCreate 中将 HasOptionsMenu 设置为 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;
}
}

关于c# - 如何在android中创建一个选项菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15224150/

27 4 0