在触摸时删除 LinearLayout 项目
Posted
技术标签:
【中文标题】在触摸时删除 LinearLayout 项目【英文标题】:Remove LinearLayout item on touch 【发布时间】:2018-06-22 16:47:11 【问题描述】:可以在 Xamarin android 的 LinearLayout onClick 中删除特殊视图吗? 例如,我在 LinearLyout 中介绍了一些 TextView,我触摸了一个删除。我可以在没有 TextView 的 Id 的情况下执行此操作,我可以通过 LinearLayout 删除吗?逻辑方案:
var layout = FindViewById<LinearLayout>(Resource.Id.layout);
TextView text;
layout.Click += (sender, e) => text = new TextView(this); text.Text="Text";
layout.AddView(text) ;
// And here I don't know how to make, something like this
layout.Click /*Click on text*/ += (sender,e) = layout.Remove(/*OnTouched
TextView in LinearLayout*/);
可以吗?
【问题讨论】:
【参考方案1】:您可以使用view.SetVisibility(ViewStates.Gone)
将视图从其父级层次结构中删除,尝试在Click
处理程序中执行此操作
评论后编辑:
那么您应该在每个视图上添加 Click 方法,而不是将其添加到布局中:
text.Click /*Click on text*/ += (sender,e) =>
sender.SetVisibility(ViewStates.Gone);
【讨论】:
是的,你说得对,但我忘了说我总是有新的实例,我必须通过 arg 获取这个 TextView。我修复代码。 `` 那么您应该在每个视图上添加 Click 方法,而不是将其添加到布局中:text.Click /*Click on text*/ += (sender,e) => sender.SetVisibility(ViewStates.Gone);
是的@AdricoM。我现在修复了代码。请问现在可以看了吗?我想使用像 ListView 这样的布局。像这样的东西。
那你应该试试:var layout = FindViewById<LinearLayout>(Resource.Id.layout); TextView text; layout.Click += (sender, e) => text = new TextView(this); text.Text="Text"; text.Click += (sender,e) => sender.SetVisibility(ViewStates.Gone); layout.AddView(text) ;
有些想错了。我无法正确使用 args 。工作只是这样,但只在最后一个实例中被删除。 var layout = FindViewById<LinearLayout>(Resource.Id.layout); TextView text; layout.Click += (sender, e) => text = new TextView(this); text.Text="Text"; text.Click += (sender,e) => text.Visibility = ViewStates.Gone; layout.AddView(text) ;
Args 绝对不行。以上是关于在触摸时删除 LinearLayout 项目的主要内容,如果未能解决你的问题,请参考以下文章
android - 过度绘制布局允许通过 LinearLayout 进行触摸
如何删除GridView内LinearLayout中的空白?