如何更改我的应用字体

时间:2013-12-24 09:39:34

标签: java android eclipse android-typeface

我正在开发一个记事本应用程序,我想使用我的自定义字体,我正在遵循此代码。

Typeface barType = Typeface.createFromAsset(getApplicationContext().getAssets(),"font/CaviarDreams.ttf");
    subject.setTypeface(barType);

但是,我不想使用此代码,因为我必须为每个textview或edittext编写此代码 有没有办法轻松搞定?

4 个答案:

答案 0 :(得分:0)

你必须继承TextView / EditText并在xml中使用你的子类

private void init() {
        if (!isInEditMode()) {
            Typeface tf = Typeface.createFromAsset(getContext().getAssets(), "font/CaviarDreams.ttf");
            setTypeface(tf);
        }
    }

并从您的自定义init() / TextView

的构造函数中调用EditText方法

答案 1 :(得分:0)

您需要继承EditText并在其构造函数集字体

例如:

import android.content.Context;
import android.graphics.Typeface;
import android.util.AttributeSet;
import android.widget.EditText;

public class EditTextWithFont extends EditText {

    public EditTextWithFont(Context c) {
        super(c);
        init();
    }

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

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

    private void init() {
        if (!isInEditMode()) {
            Typeface barType = Typeface.createFromAsset(getApplicationContext().getAssets(),"font/CaviarDreams.ttf");
            setTypeface(barType);
        }
    }
}

您可以为textview和按钮

创建类似的类

答案 2 :(得分:0)

Roboto lightTextView类的全球Button

<style name="AppTheme" parent="AppBaseTheme">
    <item name="android:textViewStyle">@style/RobotoTextViewStyle</item>
    <item name="android:buttonStyle">@style/RobotoButtonStyle</item>
</style>

<style name="RobotoTextViewStyle" parent="android:Widget.TextView">
    <item name="android:fontFamily">sans-serif-light</item>
</style>

<style name="RobotoButtonStyle" parent="android:Widget.Holo.Button">
    <item name="android:fontFamily">sans-serif-light</item>
</style>

只需从列表themes.xml中选择所需的样式,然后根据原始样式创建自定义样式。最后将样式应用为应用程序的主题。

<application
    android:theme="@style/AppTheme" >
</application>

答案 3 :(得分:0)

public static void setFont(final Context context, final View v) {
        try {
            if (v instanceof ViewGroup) {
                ViewGroup vg = (ViewGroup) v;
                for (int i = 0; i < vg.getChildCount(); i++) {
                    View child = vg.getChildAt(i);
                    overrideFonts(context, child);
                }
            } else if (v instanceof TextView ) {
                ((TextView) v).setTypeface(Typeface.createFromAsset(context.getAssets(), "fonts/helvetica.ttf"));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

在实用程序类中使用此方法并将父视图作为参数传递,它将使用您的字体更新所有文本视图

例如

    View parent = (View)findViewById(R.id.parent);
    Util.setFont(this,parent);

请检查此Set font for all textViews in activity?