我想在我在另一个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));
当尝试使用其他活动的资产时,我还有什么必须做的吗?
答案 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);
}
}
然后在布局中声明此类与TextView相同,如下所示。