我希望找到指定活动中包含“气球”标签的所有视图,然后使用setVisibility
隐藏它们到GONE
。
有谁知道如何检索具有给定标记的视图列表?
答案 0 :(得分:58)
你走了:
private static ArrayList<View> getViewsByTag(ViewGroup root, String tag){
ArrayList<View> views = new ArrayList<View>();
final int childCount = root.getChildCount();
for (int i = 0; i < childCount; i++) {
final View child = root.getChildAt(i);
if (child instanceof ViewGroup) {
views.addAll(getViewsByTag((ViewGroup) child, tag));
}
final Object tagObj = child.getTag();
if (tagObj != null && tagObj.equals(tag)) {
views.add(child);
}
}
return views;
}
我已在此处回答:Android - how to find multiple views with common attribute
答案 1 :(得分:7)
您可以通过以下方式为视图设置标记:
someView.setContentDescription("MyTag");
然后,为了找到所有带有该标记的视图,您需要调用:
ArrayList<View> outputViews = new ArrayList<>();
rootView.findViewsWithText(outputViews, "MyTag", FIND_VIEWS_WITH_CONTENT_DESCRIPTION);
答案 2 :(得分:6)
一种方法是从父ViewGroup开始,循环遍历其子项(及其子项等),然后检查每一项上的标记。
答案 3 :(得分:3)
此API调用View#findViewWithTag可以提供帮助吗?请注意,它只返回一个视图...
查找具有给定标记的子视图。如果这个观点有给定的 标签,返回此视图。