¿Establecer fuente para todas las textViews en actividad?

¿Es posible establecer la fuente para todos los TextViews en una actividad? Puedo establecer la fuente para un solo textView usando:

TextView tv=(TextView)findViewById(R.id.textView1); Typeface face=Typeface.createFromAsset(getAssets(), "font.ttf"); tv.setTypeface(face); 

Pero me gustaría cambiar todas las textViews a la vez, en lugar de configurarla manualmente para cada textView, cualquier información sería apreciada.

    Solution1 :: Simplemente llame a estos métodos pasando la vista principal como argumento.

     private void overrideFonts(final Context context, final View v) { try { if (v instanceof ViewGroup) { ViewGroup vg = (ViewGroup) v; for (int i = 0; i < vg.getChildCount(); i++) { View child = vg.getChildAt(i); overrideFonts(context, child); } } else if (v instanceof TextView ) { ((TextView) v).setTypeface(Typeface.createFromAsset(context.getAssets(), "font.ttf")); } } catch (Exception e) { } } 

    Solution2 :: puede subclasificar la clase TextView con su fuente personalizada y usarla en lugar de textview.

     public class MyTextView extends TextView { public MyTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(); } public MyTextView(Context context, AttributeSet attrs) { super(context, attrs); init(); } public MyTextView(Context context) { super(context); init(); } private void init() { if (!isInEditMode()) { Typeface tf = Typeface.createFromAsset(getContext().getAssets(), "font.ttf"); setTypeface(tf); } } } 

    El de mi colección personal:

     private void setFontForContainer(ViewGroup contentLayout) { for (int i=0; i < contentLayout.getChildCount(); i++) { View view = contentLayout.getChildAt(i); if (view instanceof TextView) ((TextView)view).setTypeface(yourFont); else if (view instanceof ViewGroup) setFontForContainer((ViewGroup) view); } }