在Android中使用字体的正确方法是什么?我看到许多使用自定义XML标记进行文本查看的示例。我试图在Java中设置普通文本视图并且工作正常,那么使用自定义字段的原因是什么?
答案 0 :(得分:1)
使用自定义字体时,最好将字体添加到项目的/ assets目录中。执行以下操作非常轻量级:
TextView customTypefaceTextView = (TextView) findViewById(R.id.customTypefaceTextView);
Typeface customTypeface = Typeface.createFromAsset(getAssets(), "Custom_Typeface.ttf");
customTypefaceTextView.setTypeface(customTypeface);
请记住,找到您的资源将与当前Context
相关联,因此,如果您在片段与活动中使用自定义字体,则需要拨打getActivity().getAssets()
而不是getAssets()
。
这是对http://code.tutsplus.com/tutorials/customize-android-fonts--mobile-1601
快速提示的引用此外,创建一个extends TextView
类以帮助您对自定义字体实现更实际的实现可能更实际,该字体可用于要添加自定义字体的TextView
喜欢这样:
public class CustomTitleTextView extends TextView {
private Context m_classContext = null;
private Typeface m_customTypeFace = null;
// Default Constructor
public CustomTitleTextView(Context context) {
super(context);
// TODO Auto-generated constructor stub
this.m_classContext = context;
createRobotoTitleTextView();
}
// Default Constructor
public CustomTitleTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
this.m_classContext = context;
createRobotoTitleTextView();
}
// Default Constructor
public CustomTitleTextView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
this.m_classContext = context;
createRobotoTitleTextView();
}
// Adds the Typeface to the TextView
private void createRobotoTitleTextView()
{
m_customTypeFace = Typeface.createFromAsset(m_classContext.getAssets(), "Roboto-Thin.ttf");
this.setTypeface(m_customTypeFace);
}
}
然后您可以在任何布局中使用XML格式
<packagename.CustomTitleTextView
android:id="@+id/customTitleTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<强>更新强>
这些是我成功实现自定义字体的几种方法。该示例显示了如何通过TextView
添加自定义extends TextView
然后将其添加到XML中是不必要的,它只提供了如何创建TextView
作为可重用对象的框架,而不是在您的Activity或Fragment中动态执行。