在另一个Android Activity上使用Typeface

时间:2015-12-03 10:22:00

标签: android typeface android-typeface

我想在我在另一个Android活动上创建的TextView上使用Typeface。我在主要活动上使用了字体并且它有效。当我在另一个活动中执行相同的过程时,应用程序崩溃 - 它告诉我无法找到字体。

新活动屏幕(通过点击按钮启动):

public class RegisterUserActivity extends AppCompatActivity {

private TextView heading, description;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_register_user);

    Typeface myFont = Typeface.createFromAsset(getAssets(), "fonts/Hanken-Light.ttf");
    heading = (TextView) findViewById(R.id.registerTitleHeading);
    description = (TextView) findViewById(R.id.descriptionTextView);
    heading.setTypeface(myFont);
    description.setTypeface(myFont);


}

一些主要活动(此代码有效):

public class MainActivity extends AppCompatActivity {

//Snipped

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mainHeading = (TextView) findViewById(R.id.mainHeading);

    Typeface myFont = Typeface.createFromAsset(getAssets(), "fonts/Hanken-Light.ttf");
    mainHeading.setTypeface(myFont);
    myView = (ImageView) findViewById(R.id.myImage);
    myView.setImageDrawable(getResources().getDrawable(R.drawable.home));

当尝试使用其他活动的资产时,我还有什么必须做的吗?

2 个答案:

答案 0 :(得分:0)

这样做: - 在RegisterUserActivity中的onCreate方法上创建Typefce。

private TextView heading, description;
public static Typeface myFont;

在onCreate方法中:

  myFont = Typeface.createFromAsset(getAssets(), "fonts/Hanken-Light.ttf");

heading = (TextView) findViewById(R.id.registerTitleHeading);
description = (TextView) findViewById(R.id.descriptionTextView);
heading.setTypeface(myFont);
description.setTypeface(myFont)

在MainActivity中使用像这样

 mainHeading.setTypeface(RegisterUserActivity.myFont);

快乐的编码和乐于助人。

答案 1 :(得分:0)

使用其他方式设置自定义字体。 请遵循以下步骤。

1.在资产文件夹中输入您的字体文件。

2.使用相同的字体名称创建一个类文件名以进行标识。见下文。

 package com.bhadresh.CustomeView;

    import android.annotation.TargetApi;
    import android.content.Context;
    import android.graphics.Typeface;
    import android.os.Build;
    import android.util.AttributeSet;
    import android.widget.TextView;


    public class SF_ui_display_lightTextView extends TextView {
        public SF_ui_display_lightTextView(Context context) {
            super(context);
            init();
        }

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

        public SF_ui_display_lightTextView(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
            init();
        }

        @TargetApi(Build.VERSION_CODES.LOLLIPOP)
        public SF_ui_display_lightTextView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
            super(context, attrs, defStyleAttr, defStyleRes);
            init();
        }
        private void init() {
            Typeface tf = Typeface.createFromAsset(getContext().getAssets(),
                    "SF_ui_display_light.otf");//hear set your font name with extension which stored in your asset folder 
            setTypeface(tf);
        }
    }
  1. 然后在布局中声明此类与TextView相同,如下所示。