我嘗試了一切可以找到自定義字體的工作,但我不斷收到'空指針異常。以下是我所做的:自定義字體空指針異常
在'資產'目錄中創建文件夾'字體'。
下載谷歌的 '的Roboto' 從這裏字體:http://www.fontspace.com/google-android/roboto
重命名的文件 '的Roboto-Regular.ttf' 到 'r.ttf'
上傳到資產/ fonts /目錄中
做項目 - >清潔
現在我有這樣的代碼:
try {
fileList = am.list("fonts");
if (fileList != null)
{
for (int i = 0;i<fileList.length;i++)
{
Toast.makeText(getApplicationContext(), fileList[i] + "!", Toast.LENGTH_LONG).show();
}
}
} catch (IOException e) {
Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_LONG).show();
}
try {
Typeface font = Typeface.createFromAsset(getAssets(), "fonts/r.ttf");
TextView txt = (TextView) findViewById(R.id.rowTextView);
txt.setTypeface(font);
}
catch(Exception e)
{
Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_LONG).show();
}
代碼的第一部分列出'字體'文件夾中的所有項目,我得到一個彈出窗口顯示'r.ttf'。
代碼的第二部分嘗試加載字體,我從那裏用'空指針異常'得到一個彈出窗口。
任何想法我做錯了什麼?謝謝!
編輯: 該異常是在由該拋出: 顯示java.lang.NullPointerException上txt.setTypeface(字體);
EDIT2:
這是我activity_main.xml中
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000000"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.kb.klog.MainActivity" >
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
</RelativeLayout>
這是我想要的字體更改到行:/res/layout/row.xml
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rowTextView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="5dp"
android:textColor="#aaa"
android:textSize="18sp">
您確定您有該ID,並且在您嘗試訪問它的位置時它已經膨脹了嗎? – helleye 2014-10-19 13:52:13
我有這個ID,我可以按住ctrl + click_on_id,它將我帶到xml文件。不確定你在'嘗試訪問它時已經膨脹了'的意思,我在'onCreate'事件中有這個代碼 – user3578847 2014-10-19 13:55:37
你有** setContentView **正確的xml嗎? – helleye 2014-10-19 13:58:53