Изменить шрифт для приложения через меню настроек

Я пытаюсь реализовать функцию, при которой пользователь может активировать режим "Дислексия", который изменяет шрифт всего приложения на шрифт, сохраненный в res в виде файла.tff.

Из-за прочтения это кажется очень сложной задачей. Я понял, что можно использовать собственный шрифт для всего приложения ( отсюда), но из моего понимания этого примера он не подходит для переключения шрифта с помощью метода onClick.

Есть ли способ сделать это с помощью кнопки?

1 ответ

Вы можете расширить TextView своим собственным классом, используя его везде в вашем проекте.

public class MyTextView extends TextView {

   public MyTextView(Context context, AttributeSet attrs, int defStyle) {
       super(context, attrs, defStyle);
       init(context);
   }

   public MyTextView(Context context, AttributeSet attrs) {
       super(context, attrs);
       init(context);
   }

   public MyTextView(Context context) {
       super(context);
       init(context);
   }

   private void init(Context context) {
       Typeface tf =
       Typeface.createFromAsset(context.getAssets(), getFontFromPreferences(context));
       setTypeface(tf);
   }

   private String getFontFromPreferences(Context context) {
       SharedPreferences preferences = context.getSharedPreferences("myPrefs", Context.MODE_PRIVATE);   
       String fontString = preferences.getString("my_font_pref_key", "Default.tff");
       return fontString;
   }
}

В настройках вашей кнопки просто установите в SharedPreferences новый шрифт.

Другие вопросы по тегам