当前位置: 首页 > 知识库问答 >
问题:

字体自定义字体不起作用

杜鸿彩
2023-03-14

字体始终显示默认字体。

我的字体存储在资源/字体中。我尝试使用其他字体,并对字体进行重新编码。此外,PixlUI库并没有解决这个问题。

主要活动。Java语言

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.activity_main);

    Button button = (Button) findViewById(R.id.button);
    Typeface typeface = Typeface.createFromAsset(getAssets(),"fonts/OldEnglishFive.ttf");
    button.setTypeface(typeface);
}

activity\u main。xml

<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="220dp"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:onClick="doSomething"
    android:text="TEXT" />

共有3个答案

督辉
2023-03-14

一个好的选择是仔细检查您的文件夹、字体和字体目录名拼写。一个好主意是显示任何可能打印的错误并发布它们,以便我们更好地了解问题。如果您也可以发布字体名称并仔细检查它们是否相同,并确保您的资产位于正确的位置,希望我有所帮助。

徐焱
2023-03-14

不要使用setTypeface方法直接设置Typeface,请尝试下面的代码片段:

protected void onCreate(Bundle savedInstanceState) {
    ... //do whatever you want

    Button button = (Button) findViewById(R.id.button);
    Typeface typeface = Typeface.createFromAsset(getAssets(),"fonts/OldEnglishFive.ttf");

    button.setText(changeFontStyle("your text", typeface));
}

// custom function for changing the font style of text
public  Spannable changeFontStyle(String finalString, Typeface typeface){

    spannable = new SpannableString(finalString);
    spannable.setSpan(new CustomTypefaceSpan("", typeface), 0, finalString.length(), 0);

    return spannable;
}

请告诉我是否面临任何问题。

柴正祥
2023-03-14

如果您以前没有尝试过使用字体。我建议删除您的资产文件夹,在res文件夹中创建一个新的资产文件夹,然后将其移回原来的位置。有时Android Studio不接受生成的资产文件夹。

如图所示,运行时异常:我尝试过的每种字体都找不到字体-Android

此外,我建议创建一个扩展按钮的类,这样,如果您为按钮指定了正确的XML,它就会自动为该小部件设置字体。

例如:

public class CustomFontButton extends Button {
    AttributeSet attr;
    public CustomFontButton(Context context) {
        super(context);
        setCustomFont(context, attr);
    }

    public CustomFontButton(Context context, AttributeSet attrs) {
        super(context, attrs);
        setCustomFont(context, attrs);
    }

    public CustomFontButton(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        setCustomFont(context, attrs);
    }

    private void setCustomFont(Context ctx, AttributeSet attrs) {
        String customFont = null;
        TypedArray a = null;
        if (attrs != null) {
            a = ctx.obtainStyledAttributes(attrs, R.styleable.CustomFontButton);
            customFont = a.getString(R.styleable.CustomFontButton_customFont);
        }
        if (customFont == null) customFont = "fonts/OldEnglishFive.ttf";
        setCustomFont(ctx, customFont);
        if (a != null) {
            a.recycle();
        }
    }

    public boolean setCustomFont(Context ctx, String asset) {
        Typeface tf = null;
        try {
            tf = Typeface.createFromAsset(ctx.getAssets(), asset);
        } catch (Exception e) {
            Log.e("textView", "Could not get typeface", e);
            return false;
        }
        setTypeface(tf);
        return true;
    }
}

然后在您的xml中,您只需要更改

<yourpackagename.CustomFontButton
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="220dp"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:onClick="doSomething"
    android:text="TEXT" />

在值文件夹中创建attrs.xml。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="CustomFontButton">
        <attr name="customFont" format="string"/>
    </declare-styleable>
</resources >

这将节省您每次需要在按钮上使用自定义字体(或大多数其他小部件,可以应用相同的逻辑)时所需的设置字体

 类似资料:
  • 我是“Flutter”的新手,我试图从谷歌字体添加新的字体系列到我的应用程序。我遵循了这些步骤。 > 下载google字体(IndieFlower-Regular.ttf) 在根目录下创建了一个fonts文件夹,并复制了。tff文件。 将其添加到pubspec.yaml文件并获取依赖项。 添加到 .dart 文件中,如下所示 样式: 文本样式( 颜色: 颜色.黑色87, 字体大小: 25.0, 字

  • 问题内容: 我有Slick2D库,并使用Java做游戏。我一直想知道,只是一个简短的问题,如何在Graphics对象上设置字体以绘制不同的字体。我不能使它工作。我认为这与AngelCode有关,但是需要某种不是’.tff’的格式,所以我不知道。 那你能告诉我你怎么做吗? 问题答案: 您可以使用天使代码的BMF字体工具,该工具使用带有存储字符图像的字形图像的位图字体文件,以及描述该图像文件的文本文件

  • 问题内容: 我正在使用Swift在Xcode(7.0版)中创建游戏,并且我想在游戏结束时以字体“ gameOver.ttf”显示标签“ Game Over”。我已将字体添加到资源文件夹中。我不知道如何在我的代码中引用它。我可以帮忙吗?我的代码: 问题答案: 这些是向您的应用程序添加自定义字体的步骤: 在您的应用程序中添加“ gameOver.ttf”字体(确保它已包含在目标中) 修改applica

  • 我正在使用Lollipop的新功能,比如coloraccent,colorPrimary,用于Lollipop制作前的设备。 styles.xml 现在我想为我的文本视图、编辑文本和按钮创建一个自定义字体。在样式中,我使用彩色口音作为白色。所以编辑文本的焦点应该是白色。查看下图以获取默认编辑文本焦点。这很好。 但每当我创建自定义字体edittext时,焦点行为就不同了。它没有显示白色。相反,它显示

  • @font-face跟其在CSS中作用表现一样,在后面简单地添加个块状属性即可,类似下面: @font-face font-family Geo font-style normal src url(fonts/geo_sans_light/GensansLight.ttf) .ingeo font-family Geo 生成为: @font-face { font-famil

  • 我刚刚使用ApacheFop生成了一个PDF/X photobook,提交给照片打印服务。一切似乎都很好,但仍在继续。使用自定义衬线字体,例如“公文包”一词没有正确呈现(问题在于f-o,因为o应该在f的“头”下呈现)。例如,在Mac OS X下安装相同的字体,然后尝试文本编辑,这个词就会正确呈现。 这是我如何配置字体: 其中XML文件是通过按照FOP文档处理TTF字体实现的。该文件包含紧排对,这是