41

にテキストを描画するカスタム ビューがありますCanvasassetsフォルダfontに保存されているフォントに変更したいです。

私は使用してAndroid Studioいるので、フォルダーsrc/main/assetsを作成し、そこに ttf ファイルを配置しました。

Paint txt = new Paint()
Typeface font = Typeface.createFromAsset(getAssets(), "robotobold.ttf");
txt.setTypeface(font);

問題は、カスタム ビュー内でgetAssets()Android Studioが認識されないことですが、アクティビティ内では認識されます。私は自分から通過しようとしましたが、それを行っても変更されません。TypefaceActivityfont

4

7 に答える 7

68

ViewgetContext()メソッドを使用して現在の を取得し、Contextそれを使用してアセットを取得できます。

Typeface font = Typeface.createFromAsset(getContext().getAssets(), "robotobold.ttf");
于 2013-08-26T04:43:43.593 に答える
34

まず、フォルダーを . 内ではなく、 内に保持する必要がありますassetsproject次に、 insidesrc/mainというフォルダーを作成します。次に、特定のフォントの書体をその中に入れます。次のようなコーディングでフォントの書体を使用できます。fontsassetsttf files

Typeface type = Typeface.createFromAsset(getAssets(),"fonts/filename.ttf");
textview.setTypeface(type);
于 2013-08-26T05:14:20.150 に答える
1

プロジェクトで書体を再利用するために、書体メソッドでいっぱいのクラスを作成します。この方法では、毎回新しい書体を作成する必要はありません。

クラスを呼び出します。クラスFontClassには、使用する必要がある各書体のメソッドがあります。

public static Typeface getOpenSansRegular(Context c){
    return Typeface.createFromAsset(c.getAssets(), "OpenSans-Light.ttf");
}

次に、次のように使用できます。

TextView text = (TextView) findViewById(R.id.textview);
text.setTypeface(FontClass.getOpenSansRegular(getApplicationContext());
于 2016-09-07T09:29:29.220 に答える
0
    Typeface robo = Typeface.createFromAsset(getActivity().getAssets(), "fonts/Roboto-Thin.ttf");
于 2014-08-28T14:52:57.887 に答える
0

アセットフォルダーは、「src」フォルダーではなく、Project」フォルダー内に配置する必要があります。フォントを「src/main/assets/robotobold.ttf」に配置したため、機能していません。「/assets/robotobold.ttf」のように配置する必要があります。

于 2013-08-26T04:50:40.993 に答える