【问题标题】: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】:
据我所知,没有任何方法可以删除特定类型的视图。实现此目的的最佳方法是单独删除每个视图。