- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在制作必须以“NASTALIQ.TTF”字体显示文本的 Android 应用程序。我将字体 ttf 文件放在项目的以下目录中:
C:\Users\Zeeshan\AndroidStudioProjects\NasirKazmiPehliBarish\app\build\intermediates\assets\fonts\NASTALIQ.TTF
C:\Users\Zeeshan\AndroidStudioProjects\NasirKazmiPehliBarish\app\build\generated\assets\fonts\NASTALIQ.TTF
我使用以下行来加载字体:
Typeface tf = Typeface.createFromAsset(this.getAssets(), "/fonts/NASTALIQ.TTF");
但它抛出找不到字体的异常。这是日志:
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:
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:
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);
}
}
);
}
}
可能是我提供了错误的路径,它没有找到目标字体。我尝试了很多组合,但它们没有用,例如:
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");
最佳答案
将你的字体文件从 main/assets/fonts/NASTALIQ.TTF
如果任何文件夹不存在,请创建它。
关于java - TypeFace.createFromAsset 找不到字体错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52483196/
在我的应用程序中,我有一个 textView,用户可以在其中设置字体和字体样式。我正在使用这一行来设置字体。 tvQuoteTextSample.setTypeface(Typeface.SERIF)
字体始终显示默认字体。 我的字体存储在 Assets /字体中。我尝试过使用其他字体,并重新编码字体。 PixlUI 库也没有解决问题。 MainActivity.java protected voi
在我的应用程序中,我从服务器动态下载字体并将它们保存到数据库中。有什么方法可以从 db 中的 blob 创建 Typaface 吗?当然我可以创建临时文件并从中加载数据,但这不是最好的方法 最佳答案
鉴于以下 react 代码: import React, { Component } from 'react'; import ReactDOM from 'react-dom'; import 't
我已经使用 Typeface.js 转换了一些字体,默认字体 Century Gothic 工作正常。但是现在我正在尝试使用我上传的 Century Gothic Bold,但我不知道确切的名称是什么
我正在制作必须以“NASTALIQ.TTF”字体显示文本的 Android 应用程序。我将字体 ttf 文件放在项目的以下目录中: C:\Users\Zeeshan\AndroidStudioProj
简单的问题:Typeface.createFromAsset() 是否缓存?还是我应该在内存中保留一个引用以方便使用?我问的原因是因为我经常使用它(都是为了在许多 Activity/ View 中维护
我使用自定义字体绘制( Canvas )文本(准确地说:我使用自定义字体)。然而,这种字体不支持很多字符,因此一些(不受支持的)字符看起来不同。现在我问自己以下问题: 不受支持的角色看起来如何 - 外
在开始 Activity 中,我调用 FontFactory.init(getApplicationContext()); 将 Context 设置为 FontFactory 类。 我还有扩展 Tex
我正在尝试在我的 NotificationCompat.Builder 中添加一个 Typeface ->setContentTitle() 和 setContentText()。我通过 初始化了 T
我想更改对话框中 textview 中的字体: dialog = new Dialog(MyActivity.this); dialog.setContentView(R.layout.my_dial
如何在 NumberPicker 中更改字体类型。我尝试这样做,但字体没有改变。任何想法?P.S: color 和 textSize 有变化。 public class NumberPicker ex
我正在尝试在 ListView 的元素上使用自定义字体。所以在我的 ListViewAdapter 构造函数中我有: private Context context; private List pro
Typeface 类包含一个静态的 findFromCache 方法: https://android.googlesource.com/platform/frameworks/base/+/refs
我的应用程序因以下代码而崩溃。我正在尝试在 textView 中提供自定义字体。 Assets 目录没问题,因为我已经仔细检查过了。 @Override protected void onCreate
所以我有这个界面: public interface Utils{ static final Typeface FONT = Typeface.createFromAsset(getAsset
我在整个应用程序中都使用 Helvetica 字体。目前我正在与 Assets 分开创建字体。所以我说了这三个 HelveticaNeue = Typeface.createFromAsset(app
我想将 TextView 上的第一个字符设置为 TypeFace,将第二个字符设置为不同的 Type face,依此类推。 我读了这个例子: Spannable str = (Spannable) t
我正在尝试使用我在互联网上找到的字体,但问题是我得到了一个带有“无法制作原生字体”的 FC。 这是我的 ListVIew 的 getView 中的代码: holder.tv_SuraN
我有一个应用程序可以更改某些元素的字体。它适用于大多数人,但可能有 0.5% 的人在尝试更改字体时会出现异常。堆栈跟踪的重要部分是: Caused by: java.lang.RuntimeExcep
我是一名优秀的程序员,十分优秀!