Parcourez tous les enfants de GroupView?

Voici mon code:

Typeface font = Typeface.createFromAsset(getAssets(), "fonts/choco.ttf"); ViewGroup rootView = (ViewGroup) findViewById(android.R.id.content).getRootView(); for(int i = 0; i < rootView.getChildCount(); i++) { View child = rootView.getChildAt(i); Log.d("menfis", child.toString()); if(child != null) if(child.getClass() == TextView.class) ((TextView) child).setTypeface(font); } 

Voici mon XML pour cette page:

      

Le problème est que je ne l’obtiens que sur la console LogCat:

 09-20 14:34:27.264: DEBUG/menfis(12251): android.widget.LinearLayout@40523820 

Pourquoi je ne reçois pas de références aux TextViews?

Vous devez traverser l’arbre de la vue de manière récursive. Actuellement, vous ne listez que les enfants de la vue racine.

En d’autres termes, vous avez besoin de quelque chose comme ça:

 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ... Typeface font = Typeface.createFromAsset(getAssets(), "fonts/choco.ttf"); ViewGroup rootView = (ViewGroup) findViewById(android.R.id.content).getRootView(); applyFontRecursively(rootView, font); } void applyFontRecursively(ViewGroup parent, Typeface font) { for(int i = 0; i < parent.getChildCount(); i++) { View child = parent.getChildAt(i); if(child instanceof ViewGroup) { applyFontRecursively((ViewGroup)child, font); } else if(child != null) { Log.d("menfis", child.toString()); if(child.getClass() == TextView.class) { ((TextView) child).setTypeface(font); } } } }