我在我的资源文件夹中创建了一个名为fonts的文件夹,并在其中放置了一个.ttf文件。并将该fontfamily赋值给我的文本,如下所示
txtName.setTypeface(Typeface.createFromAsset(context.getAssets(),"fonts/segoeui.ttf"));
但是我想在xml文件中指定这个字体。可能是这样的。
<TextView
android:id="@+id/txtName"
style="@style/My_Name"
android:fontFamily="@android:asset/fonts/segoeui"
/>
发布于 2014-11-01 22:05:22
只需使用以下代码即可。只需使用文件名添加segoeui.ttf
即可。
android:fontFamily="fonts/segoeui.ttf"
发布于 2018-02-13 14:23:17
你可以按照这个来做。在你的Application类中:
Typeface fontHelvetica = Typeface.createFromAsset(this.getResources().getAssets(), "font/helvetica_font.ttf");
injectTypeface("helvetica", fontHelvetica);
private boolean injectTypeface(String fontFamily, Typeface typeface) {
try {
Field field = Typeface.class.getDeclaredField("sSystemFontMap");
field.setAccessible(true);
Object fieldValue = field.get(null);
Map<String, Typeface> map = (Map<String, Typeface>) fieldValue;
map.put(fontFamily, typeface);
return true;
} catch (Exception e) {
Log.e("Font-Injection", "Failed to inject typeface.", e);
}
return false;
}
之后,您可以按照您的问题中提到的在XML中使用。
发布于 2014-11-01 22:15:10
您可以通过创建扩展TextView的CustomTextView来实现,如下所示
public class MyTextView extends TextView {
public MyTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
public MyTextView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public MyTextView(Context context) {
super(context);
init();
}
private void init() {
Typeface tf = Typeface.createFromAsset(getContext().getAssets(),
"your_font.ttf");
setTypeface(tf);
}
}
但请记住,在较老的android版本中存在严重的内存问题。请参阅此问题
https://stackoverflow.com/questions/26689961
复制相似问题