Android setTypeface无法正常工作

时间:2014-07-25 11:19:19

标签: android android-activity

我在android中编写简单的新应用程序,我想将setTypeface用于Activity小部件。

在下面的代码中似乎这是正确的,但我在控制台中收到此错误:

1803-1803/com.example.AndroidMultiPage E/AndroidRuntime﹕ 
     FATAL EXCEPTION: main
    java.lang.RuntimeException: Unable to start activity
    ComponentInfo{com.example.AndroidMultiPage/
    com.example.AndroidMultiPage.MyActivity}: 
    java.lang.RuntimeException: 

    native typeface cannot be made

字体路径:assets/font/BZar.ttf

我的简单代码:

package com.example.AndroidMultiPage;

import android.app.Activity;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Typeface;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import org.w3c.dom.Text;

public class MyActivity extends Activity {
    private Button submit;

    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Typeface face = Typeface.createFromAsset(getAssets(),
                "font/BZar.ttf");

        Button   submit   = (Button)   findViewById(R.id.submitButton);

        submit.setTypeface(face);

}

3 个答案:

答案 0 :(得分:1)

public void setFont(Context context, ViewGroup vg, String fontInAssetFolder) {
    final Typeface font=Typeface.createFromAsset(context.getAssets(), fontInAssetFolder);
    for (int i = 0; i < vg.getChildCount(); i++) {
        final View v = vg.getChildAt(i);
        if (v instanceof ViewGroup)
            setFont(context, (ViewGroup) v, fontInAssetFolder);
        else if (v instanceof TextView) {
            Log.e("FONT", "IS = "+ font.toString()+ "; is " + ((TextView)v).getText());
            v.post(new Runnable() {

                @Override
                public void run() {
                    (((TextView) v)).setTypeface(font);
                }
            });
        }
    }
}

答案 1 :(得分:0)

尝试将字体文件保存在资源文件夹中,并尝试使用其他字体文件。

答案 2 :(得分:0)

这是因为''字体'(复数)不是'字体'。

你有'assets / font / your_font',它应该是'assets / fonts / your_font'。 重命名文件夹并更新代码。