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?
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?
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
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);
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.
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.