Xamarin - Android 菜单

Popup 弹出菜单

弹出菜单是指附加到视图的菜单; 它也被称为快捷菜单。 让我们看看如何在 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(); 
   }; 
} 

现在,构建并运行您的应用程序。 它应该产生以下输出 −

显示弹出菜单

选项菜单

Options Menu 选项菜单是 App 的主要菜单集合,主要用于存储设置、搜索等。这里,我们将创建一个用于设置的菜单,其中包含三个项目,即 New 文件设置、帮助和关于应用程序

要创建选项菜单,我们必须在资源文件夹中创建一个新的 XML 布局文件。 首先,我们将添加一个新的 XML 文件。 右键单击 Layout 文件夹,然后转到 Add → New item → Visual C# → XML File

Choose an appropriate name for the layout file. In our example, we will call our file 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); 
      } 
   } 
} 

现在,构建并运行您的应用程序。 它应该产生以下输出 −

新的文件设置