Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-如何在我的整个应用程序中添加文本样式_Android_Typeface - Fatal编程技术网

Android-如何在我的整个应用程序中添加文本样式

Android-如何在我的整个应用程序中添加文本样式,android,typeface,Android,Typeface,我有Helvetica Neue.ttf在asset文件夹中,如何在我的整个应用程序上设置Helvetica Neue文本样式。目前无法使用安卓SDK附带的视图来实现这一点。您可以根据设置视图以使用任何Roboto字体,但不能设置自定义字体 我通常解决这个问题的方法是创建自己的文本视图,使用我的字体,如下所示: public class MyFontTextView extends TextView { public static final String FONT_PATH = "fo

我有
Helvetica Neue.ttf
asset
文件夹中,如何在我的整个应用程序上设置
Helvetica Neue
文本样式。

目前无法使用安卓SDK附带的视图来实现这一点。您可以根据设置视图以使用任何Roboto字体,但不能设置自定义字体

我通常解决这个问题的方法是创建自己的文本视图,使用我的字体,如下所示:

public class MyFontTextView extends TextView {
    public static final String FONT_PATH = "fonts/MyFont.ttf";

    public MyFontTextView(Context context) {
        super(context);
        initFont();
    }

    public MyFontTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        initFont();
    }

    public MyFontTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        initFont();
    }

    /**
     * Set up the font.
     */
    private void initFont() {
        if (!isInEditMode()) {
            Typeface font = Typeface.createFromAsset(getContext().getAssets(), FONT_PATH);
            setTypeface(font);
        }
    }
}
将所有文本视图替换为此文本视图,然后您将拥有自己的字体。请注意,其他UI元素(例如按钮)仍将使用Roboto,除非您也自定义这些元素


如果您有一个在应用程序中只使用一次的视图,则可以在该视图上调用
setTypeFace()
,而不是创建自定义视图。自定义视图方法适用于在应用程序(如TextView)中经常使用的视图。

您必须对TextView进行子类化,并在子类的构造函数中设置字体。。。然后在任何地方使用此子类,而不是TextView