Find all views with tag?

I am looking to find all the views in a specified activity that have the tag "balloon" for example then hide them using setVisibility to GONE.

Does anyone know how to retrieve a list of views with a given tag?


Solution 1:

Here you go:

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;
}

I've already answered it here :Android - how to find multiple views with common attribute

Solution 2:

You could set tags to your views in this way:

someView.setContentDescription("MyTag");

And then in order to find all views with that tag you need to call:

ArrayList<View> outputViews = new ArrayList<>();
rootView.findViewsWithText(outputViews, "MyTag", FIND_VIEWS_WITH_CONTENT_DESCRIPTION);