繁体   English   中英

以编程方式添加菜单项

[英]Add menu item programmatically

嗨,我想以编程方式添加项目菜单。 我知道如何在 XML 中添加菜单项,但如何动态实现? 我在互联网上没有找到任何关于此的信息......这可能吗? 我想实现这样的目标: https : //youtu.be/Es5UFII4oak?t=832 (但在 JAVA 中)

当您想要添加项目时,您应该覆盖OnPrepareOptionsMenu

单击添加按钮后,您应该调用InvalidateOptionsMenu(); 这是代码。

   [Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)]
    public class MainActivity : AppCompatActivity
    {
        EditText menu_item;
        EditText menu_name;
        List<string> list;
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            Xamarin.Essentials.Platform.Init(this, savedInstanceState);
            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.activity_main);
             menu_item = FindViewById<EditText>(Resource.Id.menu_item);
             menu_name = FindViewById<EditText>(Resource.Id.menu_name);
            Button add = FindViewById<Button>(Resource.Id.button1);

            list= new List<string>();
            add.Click += Add_Click;
        }

        private void Add_Click(object sender, System.EventArgs e)
        {
       //  int item_id=   Integer.ParseInt(menu_item.Text.ToString());
            string menu_name_text = menu_name.Text.ToString();
            list.Add(menu_name_text);

            ApplyChanged();
        }

        public void ApplyChanged()
        {
            InvalidateOptionsMenu();
        }

        public override bool OnPrepareOptionsMenu(IMenu menu)
        {
            menu.Clear();

            foreach (var item in list)
            {
                menu.Add(item);
            }

            return base.OnPrepareOptionsMenu(menu);
        }
        public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
        {
            Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);

            base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
        }
    }

这里是布局。


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
        <EditText
    android:inputType="number"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="id"
    android:id="@+id/menu_item"/>

<EditText
    android:inputType="text"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="name"
    android:id="@+id/menu_name"/>

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="add"
        android:id="@+id/button1"
    />

</LinearLayout>

这里正在运行 Gif。

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM