Android:正确使用自定义字体的方式

时间:2014-04-20 03:33:39

标签: android fonts android-typeface

在Android中使用字体的正确方法是什么?我看到许多使用自定义XML标记进行文本查看的示例。我试图在Java中设置普通文本视图并且工作正常,那么使用自定义字段的原因是什么?

1 个答案:

答案 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中动态执行。

祝你好运!