String fontPath ="fonts/smartoff.net_verdana.ttf"; int[] array_id_font=new int[]{R.id.umivanie_text,R.id.eda_text,R.id.son_text}; Typeface verdana; 

I want to change the font in all activities using the method. I do this:

  public void setFont() { verdana = Typeface.createFromAsset(getAssets(), fontPath); for (int i=0;i<array_id_font.length;i++){ array_id_font[i]///как применить что тут добавить?///.setTypeface(verdana) } } 

    1 answer 1

    create a base class to activate

     public class BaseActivity extends AppCompatActivity { protected String fontPath ="fonts/smartoff.net_verdana.ttf"; private Typeface typeface; protected int[] getTextViewsResIds() { return new int[0]; } public void setFont() { typeface = Typeface.createFromAsset(getAssets(), fontPath); for (int i = 0; i<getTextViewsResIds().length; i++){ TextView textView = (TextView) findViewById(getTextViewsResIds()[i]); textView.setTypeface(typeface); } } } 

    then in the activity you are interested in inherit from the base

     public class TestActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_scrolling); setFont(); } @Override protected int[] getTextViewsResIds() { return new int[]{R.id.umivanie_text,R.id.eda_text,R.id.son_text};; } } 

    override the getTextViewsResIds method, which will return the id of your TextView (for each one, activate your own ones defined in xml layout) and call setFont in onCreate