![](/img/trans.png)
[英]Programmatically add a context menu whose Click handler knows which item was right-clicked
[英]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.