在相对布局中删除所有自定义 ImageView 的简单方法
Posted
技术标签:
【中文标题】在相对布局中删除所有自定义 ImageView 的简单方法【英文标题】:Simple way to remove all custom ImageViews in Relative Layout 【发布时间】:2016-03-18 03:14:28 【问题描述】:我有一个主要的相对布局,其中包含 CustomImageView。此类扩展 ImageView 并没有什么特别之处,只是一个不同的名称,以便更容易识别它们。我要做的是从主布局中删除此 CustomImageView 的所有实例。
我的问题是,当它们到处嵌套时,你如何做到这一点?例如,它们可以直接是主布局的子级,但也可以是 RadioGroups 和 LinearLayouts 中的子级。
是否有一个简单的方法可以在相对布局上调用,它会删除其中的所有 CustomImageView 实例?类似于 RemoveAllViews(),除了删除所有特定类型。
【问题讨论】:
【参考方案1】:您可以使用迭代ViewGroup
的子代的方法来执行此操作,如果它是您的自定义View
的一个实例,则删除一个子代,或者如果该子代是另一个嵌套的ViewGroup
,则递归调用自身。例如:
private void removeCustomImageViews(final ViewGroup vg)
final int childCount = vg.getChildCount();
for(int i = 0; i < childCount; i++)
final View child = vg.getChildAt(i);
if(child instanceof CustomImageView)
vg.removeView(child);
else if(child instanceof ViewGroup)
removeCustomImageViews((ViewGroup) child);
只需使用您的主要RelativeLayout
作为参数调用此方法。
【讨论】:
【参考方案2】:据我所知,没有任何方法可以删除特定类型的视图。实现此目的的最佳方法是单独删除每个视图。
【讨论】:
以上是关于在相对布局中删除所有自定义 ImageView 的简单方法的主要内容,如果未能解决你的问题,请参考以下文章
android 自定义控件(带有删除按钮的imageview) 怎么在ImageView背景上添加button按钮 动态添加imageview 自带删除图标的imageview list删除某