在相对布局中删除所有自定义ImageView的简单方法

时间:2016-03-18 03:14:28

标签: java android view relativelayout

我有一个主要的相对布局,里面有CustomImageView。这个类没有什么特别的扩展ImageView,只是一个不同的名称,因此可以更容易地识别它们。我想要做的是从主布局中删除此CustomImageView的所有实例。

我的问题是,当它们嵌套在一起时你是如何做到这一点的?例如,它们可以直接作为主要布局的子项,但它们也可以是RadioGroups和LinearLayouts中的子项。

我是否可以在相对布局上调用一个简单的方法,它将删除其中的所有CustomImageView实例?与RemoveAllViews()类似,但删除所有特定类型。

2 个答案:

答案 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)

据我所知,没有方法可以删除特定类型的视图。实现这一目标的最佳方法是单独删除每个视图。