1

我想更改应用字体,但不能:

AndroidManifest.xml

...
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" 
        android:theme="@style/CustomTheme"
        >
...

样式.xml

....

    <style name="CustomTheme">
        <item name="android:typeface">stheiti.ttf</item>
    </style>
....

但我收到一个错误:

错误:错误:不允许使用字符串类型(在 'android:typeface' 处,值为 'stheiti.ttf')。

但我有一个rootAPP/assets/stheiti.ttf

我不明白为什么会出现该错误,我在许多站点中搜索了解决方案,但找不到任何具有相同问题的解决方案

提前致谢!:=)

4

4 回答 4

1

您可以在文本视图中设置自定义字体,例如

TextView txt = (TextView) findViewById(R.id.custom_font);
Typeface font = Typeface.createFromAsset(getAssets(), "stheiti.ttf");
txt.setTypeface(font);

如果您想在整个应用程序中实现自定义字体,那么您可以创建自定义视图并在该视图的初始化时设置您的字体。

public class MyTextView extends TextView {

public MyTextView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    init();
}

public MyTextView(Context context, AttributeSet attrs) {
    super(context, attrs);
    init();
}

public MyTextView(Context context) {
    super(context);
    init();
}

public void init() {

    Typeface tf = Typeface.createFromAsset(getContext().getAssets(), "stheiti.ttf");
    setTypeface(tf ,1);

}
于 2012-06-27T11:03:17.177 回答
0

你不能这样做,你必须以编程方式为每个视图设置自定义字体(即使你不能通过 XML 设置自定义字体,是的,你可以设置但只能设置内置字体)

检查这个:在 Android 中向主题添加自定义字体和在 Android 中使用自定义字体

于 2012-06-27T11:05:18.203 回答
0

为此使用下面的代码,它可能会对您有所帮助。

// Font path
String fontPath = "fonts/trbuc.ttf";

// text view label
TextView txtGhost = (TextView) findViewById(R.id.mTxtViewCustomFont);

// Loading Font Face
Typeface tf = Typeface.createFromAsset(mContext.getAssets(), fontPath);

// Applying font
txtGhost.setTypeface(tf);
于 2012-06-27T11:05:34.143 回答
0

对于整个应用程序,您需要制作自定义 TextView,您可以如下所示为 xml 的每个 textview 进行操作,然后转到第一个 make 文件夹,在该字体文件夹中的资产中命名字体添加您的字体 stheiti.ttf

import android.content.Context;
import android.graphics.Typeface;
import android.util.AttributeSet;
import android.widget.TextView;

 public class MyTextView extends TextView{

 public MyTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init();

    }

    public MyTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();

    }

    public MyTextView(Context context) {
        super(context);
        init();

    }



    private void init() {
        if (!isInEditMode()) {
            Typeface tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/stheiti.ttf");
            setTypeface(tf);
        }
    }


 }

之后,对于 xml 中的每个 textview,你想要这种类型的字体,而不是你在 xml 中的 textview 应该像这样添加你需要的 textview 的其他属性,与普通 textview 相同

<YourProjectPackageName.MyTextView
    android:id="@+id/textview1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="22px"
    android:textColor="#34A4c5"
 ></YourProjectPackageName>

并在您的活动中使用如下所示的custome textview

MyTextView textview=(MyTextView)findViewById(R.id.textview);
于 2012-06-27T11:33:31.507 回答