如何移除父视图 - Android

6
在Android中:
给定一个来自onTouchEvent的View,如何删除View及其父级?
我有一个LinearLayout,其中包含一个View。点击View会在LinearLayout内创建一个子布局。该子布局需要自己的onTouchListeners,因此我不能将onTouchListener附加到父LinearLayout,因为这将始终阻止对我的子布局的onTouchListeners。
因此,我需要一种方法来删除给定其子布局的父布局。我已经可以从它们的父级中删除子布局。
1个回答

25

如果你知道如何从父视图中删除子视图,就坚持你所知道的方法 ;) 这个想法是将你提升到视图树中的一个位置,以便你可以将你的父视图作为子视图删除。怎么做呢?很简单,获取你的视图的祖父视图,然后从祖父视图中删除你的父视图即可。

((ViewGroup)view.getParent().getParent()).removeView((ViewGroup)view.getParent());

1
太好了,谢谢你。顺便说一下,我在这里的getParent()调用次数有点多了,但是发现你的代码只需要稍作修改就可以适用于另一个ViewGroup。((ViewGroup)v.getParent().getParent()).removeView((ViewGroup)v.getParent()); - Glen Pierce
很高兴它对你有用!我更新了我的答案以反映你的更改。 - thomaspsk
@thomaspsk 我想动态地向我的线性布局中添加图片。稍后,我会从布局中删除一些图片。然后,我想将其恢复到我删除的位置。也就是说,我想在不删除子元素的情况下添加图片。你能帮我吗? - PriyankaChauhan
@thomaspsk,你能帮我吗?我正在尝试在按钮点击时在相对布局中显示一个片段。但是它显示错误:“指定的子项已经有一个父项。您必须首先调用removeView()来删除子项的父项。”如何解决这个问题? - im07

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接