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

时间:2015-07-18 08:44:22

标签: c# android xamarin custom-view

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

2 个答案:

答案 0 :(得分:1)

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

1)您可以将ListView放在按钮下,但设置其"可见性"财产到" Visibility.Gone。"按下按钮后,您可以将可见性支柱设置为" 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();

答案 1 :(得分:0)

我使用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;

        }

    }

在您的资源中 - &gt;将文件夹创建为“菜单”(如果不存在) 在里面的菜单中添加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>

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