Android的 - 如何为整个应用程序自定义字体[复制](Android - How to set

2019-06-27 20:46发布

可能重复:
是否有可能设置字体为整个应用程序?

我需要为整个应用程序的自定义字体(.ttf格式),我该怎么办呢? 从清单或XML将是最好的选择,如果有可能

Answer 1:

编辑2014年9月:

对于任何人仍然看到这个老可怕的答案,真正的好答案就在这里:

https://stackoverflow.com/a/16883281/1154026


旧:

您最好的选择是这样的:

定制的Android字体

所以

    TextView text = (TextView) findViewById(R.id.custom_font);
    Typeface font = Typeface.createFromAsset(getAssets(), "yourfont.ttf");
    text.setTypeface(font);

凭借在“资产”文件夹的根你的.ttf。



Answer 2:

你可以不喜欢这样。 创建自定义的TextView到处都使用一个

public class MyTextView extends android.widget.TextView
{

    public MyTextView(Context context)
    {
        this(context, null);
    }

    public MyTextView(Context context, AttributeSet attrs)
    {
        this(context, attrs, 0);
    }

    public MyTextView(Context context, AttributeSet attrs, int defStyle)
    {
        super(context, attrs);
        if (this.isInEditMode()) return ;

        final TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.SomeStyle);
        final String customFont = a.getString(R.styleable.SomeStyle_font);

        //Build a custom typeface-cache here!
        this.setTypeface(
            Typeface.createFromAsset(context.getAssets(), customFont)
        );  
    }
}

加入这attrs.xml

<declare-styleable name="SomeStyle">
    <attr name="font" format="string" />
</declare-styleable>

然后在你的主题,这样做:这将确保所有的textviews将使用样式MyTextView

<item name="android:textViewStyle">@style/MyTextView</item>

现在,我们可以使用自定义属性,在这种风格定义自定义字体。

<style name="MyTextView" parent="@android:style/Widget.TextView">
    <item name="font">MyPathToFontInAssets.ttf</item>
</style>

所以每当你在项目中使用MyTextView,就会有你的自定义字体。

重要提示:字体被没有缓存,所以如果你打算使用此代码,你也应该建立一个自定义的字体缓存,所以你可以重新使用自定义字体为所有textviews。 这将显著加快行动的应用程序!

更新:由于阿米尔说的话,这几乎是一样的自定义字体和XML布局(安卓),但我也使用Android造型自动使用它在应用中的所有textviews。



Answer 3:

创造学习一个TextView子类,随处使用

    public class RobotoTextView extends TextView {

    public RobotoTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init();
    }

    public RobotoTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public RobotoTextView(Context context) {
        super(context);
        init();
    }

    private void init() {
        if (!isInEditMode()) {
            Typeface tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/Roboto-Light.ttf");
            setTypeface(tf);
        }
    }

}

用法

<com.test.RobotoTextView
        android:id="@+id/name"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        />

在Java代码中,你可以将其转换为TextView的



Answer 4:

TextView tv=(TextView)findViewById(R.id.custom);
    Typeface face=Typeface.createFromAsset(getAssets(),
                                          "fonts/Verdana.ttf");

    tv.setTypeface(face);

把字体文件中的字体文件夹中/ RES /

就像我的回答如果是有帮助...



Answer 5:

您可以扩展的TextView的建议在这里和设置您的字体上,然后在整个应用程序中使用它。



文章来源: Android - How to set a custom font for whole app [duplicate]