【问题标题】:Simple way to remove all custom ImageViews in Relative Layout在相对布局中删除所有自定义 ImageView 的简单方法
【发布时间】:2016-03-18 03:14:28
【问题描述】:

我有一个主要的相对布局,其中包含 CustomImageView。此类扩展 ImageView 并没有什么特别之处,只是一个不同的名称,以便更容易识别它们。我要做的是从主布局中删除此 CustomImageView 的所有实例。

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

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

【问题讨论】:

    标签: java android view android-relativelayout


    【解决方案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】:

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

      【讨论】:

        猜你喜欢
        • 2012-10-27
        • 2019-02-18
        • 2016-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-05
        • 1970-01-01
        相关资源
        最近更新 更多