如何设置相同的字体系列到整个Android应用程序

时间:2014-04-17 13:59:43

标签: android android-actionbar android-ui android-appcompat android-fonts

您好我想为整个Android应用程序设置相同的字体系列。我已经看到了这个Is it possible to set a custom font for entire of application?,但这一切都在使用代码。我想在Theme中设置它以便它可以在所有方面工作。它还应该转换ActionBar文本的字体系列。

有什么办法吗?

styles.xml

<resources>

    <!--
        Base application theme, dependent on API level. This theme is replaced
        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
    -->
    <style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">
        <!--
            Theme customizations available in newer API levels can go in
            res/values-vXX/styles.xml, while customizations related to
            backward-compatibility can go here.
        -->
    </style>

    <!-- Application theme. -->
    <style name="AppTheme" parent="AppBaseTheme">
        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
    </style>

</resources>

1 个答案:

答案 0 :(得分:1)

如果你想为你的所有视图设置TypeFace而不必每次都以编程方式设置它(并且仍然适用于所有版本的Android),你最好的选择是将View子类化并让它自动设置TypeFace你想要的。

IE。

public class CustomTextView extends TextView{

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

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

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

    public void init(boolean bold) {
        setTypeface(Typeface.createFromAsset(getAssets(), "fonts/your_font_file.ttf"));
    }
}

如果你想进一步优化它,你可以使用对该TypeFace的静态引用并使用它,这样你就不需要在每次加载视图时重新创建TypeFace。