2017-11-27 3 views
0

ユーザーは「Dyslexia」モードを有効にする機能を実装しようとしています。アプリケーション全体のフォントを.tffファイルとしてresに保存されたものに変更します。設定メニューからアプリケーションのフォントを変更してください

これは非常に難しい作業です。私は、アプリケーション全体(from here)のカスタムフォントを使用することが可能であることを理解しましたが、この例を理解するには、onClickメソッドでフォントを切り替えるのには適していません。

ボタンをトリガにする方法はありますか?

答えて

0

独自のクラスを使用して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の新しいフォントを設定します。

+0

私はButtonでもこれを行う必要がありますか? – MERCURIUS

+0

TextViewを使用して適切な背景を持つButtonを実装することもできます。したがって、「MyTextView」も同じように動作します。しかし、もしあなたがとにかくボタンを使用したいなら、それを拡張する必要があります。 –

関連する問題