web-dev-qa-db-ja.com

外部フォントをAndroidアプリケーションに追加する方法

Androidアプリケーション用のスタイリッシュなフォントを探していました。しかし、問題は、外部フォントでAndroidアプリケーションをサポート可能にする方法です。

ありがとうございました。

71
bHaRaTh

プロジェクトのアセットフォルダーの下にフォントフォルダーを作成し、TTFをそこに入れる必要があります。次に、アクティビティonCreate()で

TextView myTextView=(TextView)findViewById(R.id.textBox);
Typeface typeFace=Typeface.createFromAsset(getAssets(),"fonts/mytruetypefont.ttf");
myTextView.setTypeface(typeFace);

すべてのTTFが機能するとは限らないことに注意してください。私が実験している間、それはサブセット(Windowsでは小さな名前で書かれたもの)に対してのみ機能しました。

147
Zelimir

カスタムフォントでアプリ全体にカスタム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*/);
       }
   }
}
12
Jabbir Basha

アセットフォルダーにfontsという名前のフォルダーを作成し、以下のリンクからスニペットを追加します。

Typeface tf = Typeface.createFromAsset(getApplicationContext().getAssets(),"fonts/fontname.ttf");
textview.setTypeface(tf);
9
Jana

実装するには、Typefaceを使用する必要があります。以下のサンプルをご覧ください。

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);
      }
   }
}
7
Jabbir Basha

これを実現する最も簡単な方法は、目的のフォントをアプリケーションにパッケージ化することです。これを行うには、プロジェクトのルートにasset /フォルダーを作成し、アセットにフォント(TrueTypeまたはTTF形式)を配置します。たとえば、assets/fonts /を作成し、そこにTTFファイルを配置します。

次に、ウィジェットにそのフォントを使用するように指示する必要があります。残念ながら、XMLはアプリケーションアセットとして隠れている可能性のあるフォントを認識しないため、レイアウトXMLを使用できなくなりました。代わりに、Typeface.createFromAsset(getAssets()、“ fonts/HandmadeTypewriter.ttf”)を呼び出してJavaコードを変更し、作成されたTypefaceオブジェクトを取得してTextViewに渡す必要があります。 setTypeface()。

詳細については、こちらのチュートリアルをご覧ください。

http://www.androidguys.com/2008/08/18/fun-with-fonts/

5
bHaRaTh

これをお勧めします アプローチtypefaceのカスタムフォントの名前をstyles.xmlに追加し、フォントのセットをassetsフォルダーに入れると非常にいいです。

2
ar-g

もう1つのポイント上記の回答に加えて。フラグメント内でフォントを使用する場合、以下に示すように、onAttachメソッド(オーバーライド)で書体のインスタンス化を行う必要があります。

@Override
public void onAttach(Activity activity){
    super.onAttach(activity);
    Typeface tf = Typeface.createFromAsset(getApplicationContext().getAssets(),"fonts/fontname.ttf");
}

理由
フラグメントがアクティビティにアタッチされるまで、短い時間がかかります。フラグメントをアクティビティにアタッチする前にCreateFromAssetメソッドが呼び出されると、エラーが発生します。

2
Akil Adeshwar