以编程方式添加菜单项

问题描述 投票:0回答:1

[嗨,我想以编程方式添加项目菜单。我知道如何在XML中添加菜单项,但是如何动态实现呢?我在互联网上什么都没找到……有可能吗?我想实现以下目标:https://youtu.be/Es5UFII4oak?t=832(但在JAVA中)

c# visual-studio xamarin.android android-menu
1个回答
0
投票

要添加项目时,您应覆盖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。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.