首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeFace.createFromAsset找不到字体错误

TypeFace.createFromAsset找不到字体错误
EN

Stack Overflow用户
提问于 2018-09-24 16:00:30
回答 1查看 118关注 0票数 3

我正在制作安卓应用程序,它必须以"NASTALIQ.TTF“字体显示文本。我将字体ttf文件放置在项目的以下目录中:

  1. C:\Users\Zeeshan\AndroidStudioProjects\NasirKazmiPehliBarish\app\build\intermediates\assets\fonts\NASTALIQ.TTF
  2. C:\Users\Zeeshan\AndroidStudioProjects\NasirKazmiPehliBarish\app\build\generated\assets\fonts\NASTALIQ.TTF

我使用了下面一行来加载字体:

代码语言:javascript
复制
Typeface tf = Typeface.createFromAsset(this.getAssets(), "/fonts/NASTALIQ.TTF");

但它会抛出异常,即未找到字体。这是逻辑猫:

代码语言:javascript
复制
09-24 20:42:59.997 2380-2380/com.neatsoft.nasirkazmipehlibarish E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                  Process: com.neatsoft.nasirkazmipehlibarish, PID: 2380
                                                                                  java.lang.RuntimeException: Unable to start activity ComponentInfo{com.neatsoft.nasirkazmipehlibarish/com.neatsoft.nasirkazmipehlibarish.Ghazals}: java.lang.RuntimeException: Font asset not found /fonts/NASTALIQ.TTF
                                                                                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665)
                                                                                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
                                                                                      at android.app.ActivityThread.-wrap12(ActivityThread.java)
                                                                                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
                                                                                      at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                      at android.os.Looper.loop(Looper.java:154)
                                                                                      at android.app.ActivityThread.main(ActivityThread.java:6119)
                                                                                      at java.lang.reflect.Method.invoke(Native Method)
                                                                                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
                                                                                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
                                                                                   Caused by: java.lang.RuntimeException: Font asset not found /fonts/NASTALIQ.TTF
                                                                                      at android.graphics.Typeface.createFromAsset(Typeface.java:206)
                                                                                      at com.neatsoft.nasirkazmipehlibarish.Ghazals.onCreate(Ghazals.java:81)
                                                                                      at android.app.Activity.performCreate(Activity.java:6679)
                                                                                      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
                                                                                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618)
                                                                                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) 
                                                                                      at android.app.ActivityThread.-wrap12(ActivityThread.java) 
                                                                                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477) 
                                                                                      at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                      at android.os.Looper.loop(Looper.java:154) 
                                                                                      at android.app.ActivityThread.main(ActivityThread.java:6119) 
                                                                                      at java.lang.reflect.Method.invoke(Native Method) 
                                                                                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
                                                                                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 

下面是包含字体代码的Ghazals.java:

代码语言:javascript
复制
package com.neatsoft.nasirkazmipehlibarish;

import android.content.Intent;
import android.graphics.Typeface;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;

import java.io.File;

import static android.R.attr.typeface;

public class Ghazals extends AppCompatActivity {
    static int GHAZAL_POSITION=0;
    TextView tvGhazals;

    String ghazals[] = {"میں نے جب لکھنا سیکھا تھا\n" +
            "پہلے تیرا نام لکھا تھا\n" +
            "\n" +
            "میں وہ صبرِ صمیم ہوں جس نے\n" +
            "بار امانت سر پہ لیا تھا\n" +
            "\n" +
            "میں وہ اسمِ عظیم ہوں جس کو\n" +
            "جن و ملک نے سجدہ کیا تھا\n" +
            "\n" +
            "تو نے کیوں مرا ہاتھ نہ پکڑا\n" +
            "میں جب رستے سے بھٹکا تھا\n" +
            "\n" +
            "جو پایا ہے وہ تیرا ہے\n" +
            "جو کھویا وہ بھی تیرا تھا\n" +
            "\n" +
            "تجھ بن ساری عمر گزاری\n" +
            "لوگ کہیں گے تو میرا تھا\n" +
            "\n" +
            "پہلی بارش بھیجنے والے\n" +
            "میں ترے درشن کا پیاسا تھا",



            "تو جب میرے گھر آیا تھا\n" +
                    "میں اک سپنا دیکھ رہا تھا\n" +
                    "\n" +
                    "تیرے بالوں کی خوشبو سے\n" +
                    "سارا آنگن مہک رہا تھا\n" +
                    "\n" +
                    "چاند کی دھیمی دھیمی ضو میں\n" +
                    "سانوا مکھڑا لَو دیتا تھا\n" +
                    "\n" +
                    "تیری نیند بھی اُڑی اُڑی تھی\n" +
                    "میں بھی کچھ کچھ جاگ رہا تھا\n" +
                    "\n" +
                    "میرے ہاتھ بھی سلگ رہے تھے\n" +
                    "تیرا ماتھا بھی جلتا تھا\n" +
                    "\n" +
                    "دو روحوں کا پیاسا دل\n" +
                    "گرج گرج کر برس رہا تھا\n" +
                    "\n" +
                    "دو یادوں کا چڑھتا دریا\n" +
                    "ایک ہی ساگر میں گرتا تھا\n" +
                    "\n" +
                    "دل کی کہانی کہتے کہتے\n" +
                    "رات کا آنچل بھیگ چلا تھا\n" +
                    "\n" +
                    "رات گئے سویا تھا لیکن\n" +
                    "تجھ سے پہلے جاگ اُٹھا تھا"};


    public void goToNextActivity(int positionOfGhazal){
        GHAZAL_POSITION = positionOfGhazal;
    }


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ghazals);

        tvGhazals = (TextView) findViewById(R.id.textView_ghazal);
        tvGhazals.setText(ghazals[GHAZAL_POSITION]);
       Typeface tf = Typeface.createFromAsset(this.getAssets(), "/fonts/NASTALIQ.TTF");
        //tvGhazals.setTypeface(tf); */
    }
}

最后,这里是startar MainActivity:

代码语言:javascript
复制
package com.neatsoft.nasirkazmipehlibarish;

import android.content.Intent;
import android.graphics.Typeface;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    private static ListView listView;
    private static String[] list = new String[] {
            "میں نے جب لکھنا سیکھا تھا",
            "تو جب میرے گھر آیا تھا",
            "میں جب تیرے گھر پہنچا تھا",
            "شام کا شیشہ کانپ رہا تھا",
            "دن کا پھول ابھی جاگا تھا",
            "پتھر کا شہر وہ بھی کیا تھا",
            "پچھلے پہر کا سناٹا تھا",
            "گرد نے خیمہ تھام لیا تھا",
            "تُو جب دوبارہ آیا تھا",
            "تجھ بن گھر کتنا سونا تھا",
            "دھوپ تھی اور بادل چھایا تھا",
            "دم ہونٹوں پر آکے رکا تھا",
            "چاند ابھی تھک کر سویا تھا",
            "نئے دیس کا رنگ نیا تھا",
            "چھوٹی رات سفر لمبا تھا",
            "تھوڑی دیر کو جی بہلا تھا",
            "میں تیرے شہر سے پھر گزرا تھا",
            "میں اس شہر میں کیوں آیا تھا",
            "پل پل کانٹا سا چبھتا تھا",
            "روتے روتے کون ہنسا تھا",
            "پون ہری جنگل بھی ہرا تھا",
            "تنہائی کا دکھ گہرا تھا",
            "تیرا قصور نہیں میرا تھا"
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ListView();



    }

    public void ListView(){
        listView = (ListView) findViewById(R.id.listView);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.titles_list, list);
        listView.setAdapter(adapter);

        listView.setOnItemClickListener(
                new AdapterView.OnItemClickListener(){
                    @Override
                    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                        String value = (String) listView.getItemAtPosition(position);
                        Toast.makeText(MainActivity.this, position + "", Toast.LENGTH_LONG).show();

                        Ghazals ghazal = new Ghazals();
                        ghazal.goToNextActivity(position);

                        Intent intent = new Intent("com.neatsoft.nasirkazmipehlibarish.Ghazals");
                        startActivity(intent);

                    }
                }
        );

    }


}

可能是我给了错误的路径,它找不到目标字体。我尝试了许多组合,但它们都没有成功。例如:

代码语言:javascript
复制
Typeface tf = Typeface.createFromAsset(this.getAssets(), "/fonts/NASTALIQ.TTF");
Typeface tf = Typeface.createFromAsset(this.getAssets(), "fonts/NASTALIQ.TTF");
Typeface tf = Typeface.createFromAsset(this.getAssets(), "/NASTALIQ.TTF");
Typeface tf = Typeface.createFromAsset(this.getAssets(), "NASTALIQ.TTF");
Typeface tf = Typeface.createFromAsset(this.getAssets(), "assets/fonts/NASTALIQ.TTF");
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-24 16:10:09

如果不存在任何文件夹,请将您的字体文件从main/assets/fonts/NASTALIQ.TTF中移动,创建它。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52483196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档