Xamarin - เมนู

เมนูป๊อปอัป

เมนูป๊อปอัพหมายถึงเมนูที่แนบมากับมุมมอง เรียกอีกอย่างว่าไฟล์shortcut menu. มาดูวิธีเพิ่มเมนูป๊อปอัพลงในแอพ 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. ภายในโฟลเดอร์เมนูให้เพิ่มไฟล์ xml ใหม่ที่เรียกว่าpopMenu.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(); 
   }; 
}

ตอนนี้สร้างและเรียกใช้แอปพลิเคชันของคุณ ควรให้ผลลัพธ์ดังต่อไปนี้ -

เมนูตัวเลือก

เมนูตัวเลือกคือชุดของเมนูที่เป็นเมนูหลักของแอพและส่วนใหญ่จะใช้ในการจัดเก็บการตั้งค่าการค้นหาและอื่น ๆ ที่นี่เราจะสร้างเมนูสำหรับการตั้งค่าโดยมีสามรายการอยู่ภายในนั่นคือ New File Settings, Help, and About App.

ในการสร้างเมนูตัวเลือกเราต้องสร้างไฟล์เลย์เอาต์ XML ใหม่ในโฟลเดอร์ทรัพยากร ก่อนอื่นเราจะเพิ่มไฟล์ XML ใหม่ คลิกขวาที่ไฟล์Layout folderจากนั้นไปที่ Add → New item → Visual C# → XML File.

เลือกชื่อที่เหมาะสมสำหรับ layout 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); 
}

ต่อไปเราจะสร้างการดำเนินการเพื่อตอบสนองต่อไฟล์ settings 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); 
      } 
   } 
}

ตอนนี้สร้างและเรียกใช้แอปพลิเคชันของคุณ ควรให้ผลลัพธ์ดังต่อไปนี้ -