如何在单击 Xamarin 按钮时添加自定义视图

How do I add a custom view on click of a button Xamarin

我正在处理片段,我需要在单击包含列表视图的按钮时显示自定义布局。此自定义布局应显示在该按钮下方。 任何人都可以为 this.I 提出一些建议吗?几乎所有可用于 xamarin.我们可以在 android 中使用 SetCustonView 方法执行此操作,但不知道如何在 C# 中显示它

根据我的经验,您可以做几件事:

1) 你可以将你的 ListView 放在你的按钮下面,但是将它的 "Visibility" 属性 设置为 "Visibility.Gone." 当按下按钮时,你可以将 Visibility 属性设置为 "Visibility.Visible."

View.FindViewById<Button>(Resource.Id.MyButton).Click += (object sender, System.EventArgs e) =>
                {
                    View.FindViewById<ListView>(Resource.Id.MyListView).Visibility = Android.Views.ViewStates.Visible;
                };

2) 另一种选择是将您的 ListView 放入片段中。当您的按钮被点击时,您 运行 一个 FragmentTransaction 以将片段添加到您的视图。

var fragTransaction = this.FragmentManager.BeginTransaction().Replace(Resource.Id.content_frame, myFrag, "current_frag");
fragTransaction.Commit();

通过使用this,我得到了一个更好的解决方案来实现上述预期 下面是我实现的代码

var buttonClick = FindViewById<Button>(Resource.Id.button);
PopupMenu menu = new PopupMenu(Activity, Resource.Id.button);
        menu.MenuInflater.Inflate(Resource.Menu.reports_nav_menu,                     menu.Menu);
        buttonClick .Click += (s, arg) => {
            menu.Show();
        };
        menu.MenuItemClick += (s1, arg1) => {
            DisplayMenuOptionsOnClick(s1, arg1);
        };

private void DisplayMenuOptionsOnClick(Object s1,PopupMenu.MenuItemClickEventArgs arg1) {
        switch (arg1.Item.TitleFormatted.ToString()) {
            case "Item 1":
                // Do Something
                break;
            case "Item 2":
                // Do Something
                break;
            case "Item 3":
                // Do Something
                break;
            
        }
        
    }

在您的资源中 -> 将文件夹创建为 'menu'(如果不存在) 在菜单中添加 xml 文件并添加以下代码

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

  <item
      android:id="@+id/item_one"
      android:title="Item One"/>

  <item
      android:id="@+id/item_two"
      android:title="Item Two"/>

  <item
      android:id="@+id/item_three"
      android:title="Item Three"/>

</menu>

在下面发表评论以获得更多说明。