所以我想在android中更改android:fontFamily,但我在android中没有看到任何预定义的字体。如何选择预定义的选项之一?我真的不需要定义我自己的TypeFace,但我所需要的是与现在显示的不同。

<TextView
    android:id="@+id/HeaderText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="52dp"
    android:gravity="center"
    android:text="CallerBlocker"
    android:textSize="40dp"
    android:fontFamily="Arial"
 />

看来我在上面做的事真的行不通!BTW android:fontFamily=“Arial”是一个愚蠢的尝试!


当前回答

要按程序设置字体,请写。。。

 TextView tv7 = new TextView(this);
 tv7.setText(" TIME ");    
 tv7.setTypeface(Typeface.create("sans-serif-condensed",Typeface.BOLD));
 tv7.setTextSize(12);
 tbrow.addView(tv7);

名称“sans-serif concentrated”是从fonts.xml文件中引用的,该文件应在app-->res-->values文件夹中创建,其中包含字体。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="font_family_light">sans-serif-light</string>
    <string name="font_family_medium">sans-serif-medium</string>
    <string name="font_family_regular">sans-serif</string>
    <string name="font_family_condensed">sans-serif-condensed</string>
    <string name="font_family_black">sans-serif-black</string>
    <string name="font_family_thin">sans-serif-thin</string>
</resources>

希望这是明确的!

其他回答

你想要的是不可能的。您必须在代码中设置TypeFace。

在XML中,您可以做的是

android:typeface="sans" | "serif" | "monospace"

除此之外,您无法使用XML中的字体。:)

对于Arial,您需要在代码中设置字体。

这是以编程方式设置字体的方法:

TextView tv = (TextView) findViewById(R.id.appname);
Typeface face = Typeface.createFromAsset(getAssets(),
            "fonts/epimodem.ttf");
tv.setTypeface(face);

将字体文件放在assets文件夹中。在我的例子中,我创建了一个名为字体的子目录。

编辑:如果你想知道你的资产文件夹在哪里,请看这个问题

在某些情况下,这里有一种更简单的方法。其原理是在xml布局中添加不可见的TextVview,并在java代码中获取其typeFace。

xml文件中的布局:

<TextView
    android:text="The classic bread is made of flour hot and salty. The classic bread is made of flour hot and salty. The classic bread is made of flour hot and salty."
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:fontFamily="sans-serif-thin"
    android:id="@+id/textViewDescription"/>

java代码:

myText.setTypeface(textViewSelectedDescription.getTypeface());

它对我很有用(例如在TextSwitcher中)。

也许我的评论会对某些人有用:我试图了解为什么app:fontFamily=“@font/my_font”不起作用,在浪费了一段时间后发现,有效的解决方案是android:fontFamily=“@font/my_font”

Typeface typeface = ResourcesCompat.getFont(context, R.font.font_name);
textView.setTypeface(typeface);

通过编程将字体轻松设置为res>font目录中的任何文本视图