gpt4 book ai didi

android - 在我的应用程序中设置自定义文本样式时出错

转载 作者:太空宇宙 更新时间:2023-11-03 10:44:59 26 4
gpt4 key购买 nike

我在我的 Android 应用程序中为 TextView 和 EditText 使用自定义字体。我为字体编辑文本和 TextView 创建了一个单独的类。我在文本中使用 Calibri 字体。

但在运行我的应用程序后,它在所有文件中显示以下错误 -

com.pack.demo.MyFontedTextView 无法实例化,其中 MyFontedTextView 是类文件,com.pack.demo.MyFontedEditText 无法实例化。

在我所有的布局中,我得到的运行时异常是 -

  java.lang.RuntimeException: native typeface cannot be made
at android.graphics.Typeface.<init>(Typeface.java:175)
at android.graphics.Typeface.createFromAsset(Typeface.java:149)
at com.pack.demo.MyFontedTextView.<init>(MyFontedTextView.java:22)

com.pack.demo.MyFontedTextView.(MyFontedTextView.java:22) 在字体中显示错误 font = Typeface.createFromAsset(context.getAssets(), "calibri.otf");在下面的类文件中。

这是我的字体编辑文本的代码 -

    public class MyFontedEditText extends EditText {

public MyFontedEditText(Context context) {
super(context);
// TODO Auto-generated constructor stub
Typeface font = Typeface.createFromAsset(context.getAssets(),
"calibri.otf");
this.setTypeface(font);
}

public MyFontedEditText(Context context, AttributeSet attrs) {
super(context, attrs);
Typeface font = Typeface.createFromAsset(context.getAssets(),
"calibri.otf");
this.setTypeface(font);
}

public MyFontedEditText(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
Typeface font = Typeface.createFromAsset(context.getAssets(),
"calibri.otf");
this.setTypeface(font);
}
}

同样,我的字体 TextView 代码 -

  public class MyFontedTextView extends TextView {

public MyFontedTextView(Context context) {
super(context);
// TODO Auto-generated constructor stub
Typeface font = Typeface.createFromAsset(context.getAssets(),
"calibri.otf");
this.setTypeface(font);
this.setTypeface(null, Typeface.BOLD);
}

public MyFontedTextView(Context context, AttributeSet attrs) {
super(context, attrs);
Typeface font = Typeface.createFromAsset(context.getAssets(),
"calibri.otf");
Log.d("1", "abc");
this.setTypeface(font);
this.setTypeface(null, Typeface.BOLD);
}

public MyFontedTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
Typeface font = Typeface.createFromAsset(context.getAssets(),
"calibri.otf");
this.setTypeface(font);
this.setTypeface(null, Typeface.BOLD);
}
}

最佳答案

尝试这种方式,希望这能帮助您解决问题。

public class MyFontedTextView extends TextView {

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

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

public MyFontedTextView(Context context) {
super(context);
this.context=context;
init(context);
}

private void init(Context mContext) {
try {
Typeface tf = Typeface.createFromAsset(mContext.getAssets(), "calibri.otf");
setTypeface(tf,Typeface.BOLD);
} catch (Throwable e) {
}
}
}

关于android - 在我的应用程序中设置自定义文本样式时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25599333/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com