Java 使用自定义字体时出现问题-“;“不能使用本机字体”;
我正在尝试使用我在互联网上找到的字体,但问题是我得到了一个带有“无法制作本机字体”的FC 以下是我的ListVIew的getView中的代码:Java 使用自定义字体时出现问题-“;“不能使用本机字体”;,java,android,listview,fonts,textview,Java,Android,Listview,Fonts,Textview,我正在尝试使用我在互联网上找到的字体,但问题是我得到了一个带有“无法制作本机字体”的FC 以下是我的ListVIew的getView中的代码: holder.tv_SuraName =(TextView)convertView.findViewById(R.id.Start_Name); holder.tv_SuraName.setTypeface(Typeface.createFromAsset(mContext.getAssets(), "suralist
holder.tv_SuraName =(TextView)convertView.findViewById(R.id.Start_Name);
holder.tv_SuraName.setTypeface(Typeface.createFromAsset(mContext.getAssets(), "suralist_font.ttf"));
有人能告诉我为什么我可以使用自定义rom吗?你可以得到它。。文件为.ttf,如中的Commonware状态所示
我猜字体本身有问题。那个错误
当操作系统中的本机代码尝试加载
字体
无论如何,试试这个:
holder.tv_SuraName = (TextView)convertView.findViewById(R.id.Start_Name);
Typeface Font = Typeface.createFromAsset(this.getAssets(),"suralist_font.ttf");
holder.tv_SuraName.setTypeface(Font);
由于某种原因,字体文件已损坏或不受支持。您可以将其放入SD卡并从文件中加载,以确保您的资产没有问题。希望这会有所帮助
Typeface.createFromAsset泄漏资产流:仔细检查扩展名是否不在大写,即suralist\u font.TTF
字体经常出现这种情况,可能会被忽略。我也遇到了同样的问题,我在assets>font>whatever.ttf中创建了我的字体,但遇到了同样的错误。我添加了字体扩展名(fonts/whatever.ttf),它解决了所有情况下的问题
holder.tv_SuraName =(TextView)convertView.findViewById(R.id.Start_Name);
holder.tv_SuraName.setTypeface(Typeface.createFromAsset(mContext.getAssets(), "fonts/suralist_font.ttf"));
基本上有4种因素会导致这种情况:
我对Windows的COMIC sans ms中的COMIC.TTF也有同样的问题。 因为我放在assets/fonts文件夹中的原始文件是上面拼写的大写文件,所以我必须准确地用大写字母输入。 createFromAsset(getAssets(),“fonts/COMIC.TTF”) 原来问题是由小写字母引起的:
createFromAsset(getAssets(),“fonts/comic.ttf”) 我的问题是资产文件夹的位置不正确 使用Android Studio时,资产文件夹应位于源代码集内,例如 src/主要/资产/
可以在中找到,但是我想补充一个原因:在调用typeface之前,您必须设置内容视图。见下面的例子 不起作用吗
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView title = (TextView)findViewById(R.id.tvTitle);
Typeface font = Typeface.createFromAsset(this.getAssets(), "fonts/whatever.ttf");
title.setTypeface(font);
setContentView(R.layout.main);
}
确实有效强>
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); // <-- call before typeface
TextView title = (TextView)findViewById(R.id.tvTitle);
Typeface font = Typeface.createFromAsset(this.getAssets(), "fonts/whatever.ttf");
title.setTypeface(font);
}
@覆盖
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);//请注意,这是由于文件损坏或您将文件放在了错误的文件夹中
根据Android文档
主要/资产/
这是空的。您可以使用它来存储原始资产文件。您在此处保存的文件将按原样编译为.apk文件,并保留原始文件名。您可以像使用URI的典型文件系统一样导航此目录,并使用AssetManager以字节流的形式读取文件。例如,这是textu的良好位置res和游戏数据
因此,您的文件夹结构应该是yourmodule/main/assets(例如a***pp/main/assets***)对我有效的是首先将我的字体名称改为小写和下划线:从Amatic-Sc.ttf改为Amatic\u Sc.ttf
然后在set.TypeFace方法中,将assets/fonts/amatic_sc.ttf更改为fonts/amatic_sc.ttf,我使用的是android studio,在我的例子中,问题是assets文件夹的路径,在Eclipse中assets文件夹的路径是res/assets/,但在android studio中是src/main/assets/
所以,我只是将我的字体文件移动到此路径,并最终解决了问题。我一直在Android Studio中对此错误进行调试。在将字体添加到资产目录后,清理并重建项目为我解决了问题。刚刚执行了一个构建-->清理
并开始渲染。我遇到了同样的问题Android 4.0.3-4.0.4上的ned(在emulator IceCreamSandwich mips 4.0.3上100%可复制)
问题是我使用的TTF字体不正确,尽管几乎所有Android版本都能加载这些TTF字体创建新的TTF字体,这解决了我的问题。要么你的字体文件已损坏,要么你在调用文件名时拼写错误。我也遇到了同样的问题,因为资产文件夹中指定的文件名已损坏
roboto_black.ttf
在java文件中声明时,我将其拼写为:
roboto_blak.ttf
如果.ttf文件位于资产文件夹中,请使用:
Typeface type_bold = Typeface.createFromAsset(getAssets(), "roboto_black.ttf");
type_bold = Typeface.createFromAsset(getAssets(), "fonts/roboto_black.ttf");
否则,如果它位于字体文件夹中,请使用:
type_bold = Typeface.createFromAsset(getAssets(), "fonts/roboto_black.ttf");
希望有帮助!我刚尝试使用文件,现在字体可以使用了!但这意味着我的资产文件夹有问题,这会影响其他内容吗?有没有办法解决此问题?不应该影响其他内容。您可以尝试重建apk,但不确定问题的具体原因。可能无法解压缩文件?请尝试使用newest Android SDK。如何在SD卡上删除它?当一个随机的人从play store下载我的应用程序时?作为旁注:Android studio用户需要在src/main中创建一个assets文件夹,因为gradle build而不是build/assets文件夹。这帮了我的忙!:)这也解决了我的问题,bebas字体文件是s像BEBAS_uuuuuf.TFF之类的东西--非常感谢!在我的例子中,我使用的是引导,字体需要复制到资产文件夹的根目录下。你的答案帮助我解决了+1。在我的例子中,问题是小写字母是第二位。这是一个很好的答案,可能会帮助很多人。刚刚节省了我的时间。谢谢!font/whatever、 ttf
零件救了我。谢谢!