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
.
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);
Could this API call View#findViewWithTag help? Please note that it only returns one view...
Look for a child view with the given tag. If this view has the given tag, return this view.
One approach would be to start with the parent ViewGroup, loop through its children(and their children and so on) and then check tags on each one of them.
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