Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用自定义字体时出现问题-“;“不能使用本机字体”;_Java_Android_Listview_Fonts_Textview - Fatal编程技术网

Java 使用自定义字体时出现问题-“;“不能使用本机字体”;

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

我正在尝试使用我在互联网上找到的字体,但问题是我得到了一个带有“无法制作本机字体”的FC

以下是我的ListVIew的getView中的代码:

        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种因素会导致这种情况:

  • 你用错分机了
  • 您必须将字体放在资产文件夹中,而不是放在资产/字体中/
  • 你拼错了字体
  • 字体必须是小写的(在我的例子中,解决方案是将MyFont.ttf重命名为MyFont.ttf,奇怪)

  • 我对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
    零件救了我。谢谢!