1

如何设置字体,其 ttfassets通过 xml 驻留在我的文件夹中?我知道如何以编程方式做到这一点,但你怎么能通过 xml 做到这一点?提前致谢。

4

5 回答 5

14

您不能直接使用 XML 来执行此操作,但是您可以扩展TextView和设置默认字体。

package com.nannu;

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

public class NanTV extends TextView{

    private Context c;
    public NanTV(Context c) {
        super(c);
        this.c = c;
        Typeface tfs = Typeface.createFromAsset(c.getAssets(),
                "font/yourfont.ttf");
        setTypeface(tfs);

    }
    public NanTV(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        this.c = context;
        Typeface tfs = Typeface.createFromAsset(c.getAssets(),
                "font/yourfont.ttf");
        setTypeface(tfs);
        // TODO Auto-generated constructor stub
    }

    public NanTV(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.c = context;
        Typeface tfs = Typeface.createFromAsset(c.getAssets(),
                "font/yourfont.ttf");
        setTypeface(tfs);

    }


}

在你的布局中使用 newTextView

<com.nannu.NanTV
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Large Text"
        android:textAppearance="?android:attr/textAppearanceLarge" 

        />

我从我的上一个答案中发布这个https://stackoverflow.com/a/11239305/1166537

于 2012-07-13T13:47:20.060 回答
3

如果您创建自己的TextView派生,则可以添加该类以编程方式处理的 XML 属性。这样,您指定了某种字体,它将在运行时设置,但您通过 XML 来完成。:)

否则,没有已知的方法可以实现所请求的行为。

于 2012-07-13T13:43:17.043 回答
1

您可以通过编写自定义 TextView 来做到这一点,否则您必须以编程方式设置它。有关更多详细信息,请参阅此链接

于 2012-07-13T13:50:32.557 回答
1

我在这里创建了一个库来解决这个问题:http ://responsiveandroid.com/2012/03/15/custom-fonts-in-android-widgets.html

您扩展一个 TextView 并在 xml 中设置字体的名称。有一个可下载的示例。

于 2014-12-11T17:52:25.773 回答
0

您可以在 assets/fonts 下包含自定义字体,然后使用 https://github.com/browep/AndroidCustomFontWidgets/ 中的代码

您可以在 XML 中指定字体,例如

<com.github.browep.customfonts.view.FontableTextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="This is in a custom font"
        app:font="MyFont-Bold.otf" />

该代码支持 FontableTextView 和 FontableButton,但如果您需要,它很容易扩展以支持其他小部件类型。

于 2017-10-04T06:50:47.350 回答