Android アプリケーション用のスタイリッシュなフォントを探していました。しかし、問題は、Android アプリケーションを外部フォントでサポートできるようにするにはどうすればよいかということです。
ありがとうございました。
Android アプリケーション用のスタイリッシュなフォントを探していました。しかし、問題は、Android アプリケーションを外部フォントでサポートできるようにするにはどうすればよいかということです。
ありがとうございました。
プロジェクトの assets フォルダーの下に fonts フォルダーを作成し、そこに TTF を配置する必要があります。次に、アクティビティで onCreate()
TextView myTextView=(TextView)findViewById(R.id.textBox);
Typeface typeFace=Typeface.createFromAsset(getAssets(),"fonts/mytruetypefont.ttf");
myTextView.setTypeface(typeFace);
すべての TTF が機能するわけではないことに注意してください。私が実験している間、それはサブセットに対してのみ機能しました(Windowsでは、名前が小文字で書かれているもの)。
カスタムフォントを使用してアプリ全体にカスタム TextView を使用できます ここにその例を示します
public class MyTextView extends TextView {
Typeface normalTypeface = Typeface.createFromAsset(getContext().getAssets(), Constants.FONT_REGULAR);
Typeface boldTypeface = Typeface.createFromAsset(getContext().getAssets(), Constants.FONT_BOLD);
public MyTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public MyTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyTextView(Context context) {
super(context);
}
public void setTypeface(Typeface tf, int style) {
if (style == Typeface.BOLD) {
super.setTypeface(boldTypeface/*, -1*/);
} else {
super.setTypeface(normalTypeface/*, -1*/);
}
}
}
assets フォルダーに fonts という名前のフォルダーを作成し、以下のリンクからスニペットを追加します。
Typeface tf = Typeface.createFromAsset(getApplicationContext().getAssets(),"fonts/fontname.ttf");
textview.setTypeface(tf);
実装するには、以下のサンプルで書体を使用する必要があります
Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/Roboto/Roboto-Regular.ttf");
for (View view : allViews)
{
if (view instanceof TextView)
{
TextView textView = (TextView) view;
textView.setTypeface(typeface);
}
}
}
これを実現する最も簡単な方法は、目的のフォントをアプリケーションにパッケージ化することです。これを行うには、プロジェクト ルートに assets/ フォルダーを作成し、フォント (TrueType または TTF 形式) をアセットに配置します。たとえば、assets/fonts/ を作成し、そこに TTF ファイルを配置できます。
次に、そのフォントを使用するようにウィジェットに指示する必要があります。残念ながら、レイアウト XML をこれに使用することはできなくなりました。XML は、アプリケーション アセットとして隠した可能性のあるフォントを認識していないためです。代わりに、Typeface.createFromAsset(getAssets(), “fonts/HandmadeTypewriter.ttf”) を呼び出して Java コードを変更し、作成された Typeface オブジェクトを取得して setTypeface() 経由で TextView に渡す必要があります。
詳細については、これを入手したチュートリアルを次に示します。
上記の回答に加えて、もう1点。フラグメント内でフォントを使用する場合、書体のインスタンス化は、以下に示すように onAttach メソッド ( override ) で行う必要があります。
@Override
public void onAttach(Activity activity){
super.onAttach(activity);
Typeface tf = Typeface.createFromAsset(getApplicationContext().getAssets(),"fonts/fontname.ttf");
}
理由:
フラグメントがアクティビティに関連付けられるまでに、短い時間があります。フラグメントをアクティビティにアタッチする前に CreateFromAsset メソッドを呼び出すと、エラーが発生します。