如何在单击 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>
在下面发表评论以获得更多说明。
我正在处理片段,我需要在单击包含列表视图的按钮时显示自定义布局。此自定义布局应显示在该按钮下方。 任何人都可以为 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>
在下面发表评论以获得更多说明。