43 votes

Trouver toutes les vues avec tag ?

Je cherche à trouver toutes les vues dans une activité spécifiée qui ont la balise "ballon" par exemple, puis les cacher en utilisant setVisibility à GONE.

Quelqu'un sait-il comment récupérer une liste de vues avec une balise donnée ?

66voto

Shlomi Schwartz Points 2218

Voilà :

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

J'ai déjà répondu ici :Android - comment trouver plusieurs vues avec attribut commun

11voto

CookieMonster Points 1320

Vous pouvez définir des balises pour vos vues de cette manière :

someView.setContentDescription("MyTag");

Et puis pour trouver toutes les vues avec cette balise, vous devez appeler :

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

6voto

Samuh Points 16564

Une approche serait de commencer par le ViewGroup parent, de passer en boucle ses enfants(et leurs enfants, etc.), puis de vérifier les balises sur chacun d'eux.

4voto

nicktmro Points 1570

Cette API peut-elle appeler View# findViewWithTag pour vous aider ? Veuillez noter qu'il ne renvoie qu'une seule vue...

Recherchez une vue enfant avec la balise donnée. Si cette vue a la balise donnée, retourner cette vue.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X