Android字体createFromAsset

Cal*_*ell 35 android

我有一个自定义视图,将文本绘制到画布上.我想将Font更改为assets文件夹中存储的字体.

我正在使用Android Studio,因此我创建了一个文件夹src/main/assets并将我的ttf文件放在那里.

Paint txt = new Paint()
Typeface font = Typeface.createFromAsset(getAssets(), "robotobold.ttf");
txt.setTypeface(font);
Run Code Online (Sandbox Code Playgroud)

问题是Android Studio无法识别我的自定义视图中的getAssets(),但它在我的Activity中识别它.我试过从我的Activity中传递Typeface但是当我这样做时它不会改变字体.

Phi*_*hil 61

您可以使用您ViewgetContext()方法获取当前值Context,然后使用它来获取资产:

Typeface font = Typeface.createFromAsset(getContext().getAssets(), "robotobold.ttf");
Run Code Online (Sandbox Code Playgroud)


小智 29

首先,你必须将你的assets文件夹保存在你的内部project而不是内部src/main..然后,创建一个名为fontsinside 的文件夹assets.然后,将特定的字体字体ttf files放在其中.您可以在编码中使用字体字体,如:

Typeface type = Typeface.createFromAsset(getAssets(),"fonts/filename.ttf");
textview.setTypeface(type);
Run Code Online (Sandbox Code Playgroud)


Sud*_*ngh 5

创建了一个文件夹 src/main/assets 并将字体文件放在那里。

在活动中

Typeface font = Typeface.createFromAsset(getAssets(),  "Mukta-Regular.ttf");
tv.setTypeface(font);
Run Code Online (Sandbox Code Playgroud)

在片段中

Typeface.createFromAsset(getActivity().getAssets(), "Mukta-Regular.ttf");
tv.setTypeface(font);
Run Code Online (Sandbox Code Playgroud)