我有一个主要的相对布局,里面有CustomImageView。这个类没有什么特别的扩展ImageView,只是一个不同的名称,因此可以更容易地识别它们。我想要做的是从主布局中删除此CustomImageView的所有实例。
我的问题是,当它们嵌套在一起时你是如何做到这一点的?例如,它们可以直接作为主要布局的子项,但它们也可以是RadioGroups和LinearLayouts中的子项。
我是否可以在相对布局上调用一个简单的方法,它将删除其中的所有CustomImageView实例?与RemoveAllViews()类似,但删除所有特定类型。
答案 0 :(得分: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
作为参数调用此方法。
答案 1 :(得分:-1)
据我所知,没有方法可以删除特定类型的视图。实现这一目标的最佳方法是单独删除每个视图。