在相对布局中删除所有自定义 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

android 关于imageview的布局文件的设定

Android在相对布局前面设置ImageView

android 自定义控件(带有删除按钮的imageview) 怎么在ImageView背景上添加button按钮 动态添加imageview 自带删除图标的imageview list删除某

从 UITableViewCell 中删除除 imageView 之外的所有子视图

如何从 tableview 的单元格中删除 imageView,并重置单元格的高度