Désactivation de toutes les vues enfant dans la présentation

J’ai vu de nombreux sujets liés à cela avant de poser ma question. Mais aucun n’a fonctionné pour moi. J’ai un RelativeLayout avec beaucoup d’autres dispositions et fragments comme des enfants. Je veux désactiver tous les enfants de “content_view” ainsi que le content_view lui-même sur un clic de bouton. j’ai essayé

contentView.setDisabled(false); 

Cela n’a pas fonctionné. J’ai aussi essayé

 for (int i = 0; i < layout.getChildCount(); i++) { View child = layout.getChildAt(i); child.setEnabled(false); } 

Même cela n’a pas fonctionné. Qu’est-ce que je fais mal? Veuillez trouver mon code .xml ci-dessous. J’ai même essayé de placer une vue avant toutes les vues. Même cela n’a pas résolu mon problème.

                               

Étant donné que vos mises en page sont très nestedes, vous devez désactiver les vues de manière récursive. Au lieu d’utiliser votre méthode, essayez quelque chose comme ceci:

 private static void disable(ViewGroup layout) { layout.setEnabled(false); for (int i = 0; i < layout.getChildCount(); i++) { View child = layout.getChildAt(i); if (child instanceof ViewGroup) { disable((ViewGroup) child); } else { child.setEnabled(false); } } } 

puis appelez:

 disable(content_view); 

Même si la réponse est attendue au lieu d’utiliser la récursivité, je pense que le code ci-dessous fera l’affaire. C’est ce que j’avais l’habitude de faire. Je viens de passer parentlayout et si afficher ou masquer comme paramètre booléen

 private void disable(LinearLayout layout, boolean enable) { for (int i = 0; i < layout.getChildCount(); i++) { View child = layout.getChildAt(i); child.setEnabled(enable); if (child instanceof ViewGroup) { ViewGroup group = (ViewGroup) child; for (int j = 0; j < group.getChildCount(); j++) { group.getChildAt(j).setEnabled(enable); } } }