查找带标签的所有视图?

时间:2011-02-21 04:21:25

标签: android

我希望找到指定活动中包含“气球”标签的所有视图,然后使用setVisibility隐藏它们到GONE

有谁知道如何检索具有给定标记的视图列表?

4 个答案:

答案 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可以提供帮助吗?请注意,它只返回一个视图...

  

查找具有给定标记的子视图。如果这个观点有给定的   标签,返回此视图。