所以我想在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”是一个愚蠢的尝试!


当前回答

一种简单的方法是在项目中添加所需的字体。

转到文件->新建->新建资源目录选择字体

这将在资源中创建一个新目录,字体。

下载字体(.ttf)。我使用https://fonts.google.com同样的

将其添加到字体文件夹中,然后在XML中或以编程方式使用它们。

XML格式-

<TextView 
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/your_font"/>

程序性地-

 Typeface typeface = ResourcesCompat.getFont(this, R.font.your_font);
 textView.setTypeface(typeface); 

其他回答

你想要的是不可能的。您必须在代码中设置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文件夹中。在我的例子中,我创建了一个名为字体的子目录。

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

这里有一个很好的图书馆

    implementation 'uk.co.chrisjenx:calligraphy:2.3.0'

在某些情况下,这里有一种更简单的方法。其原理是在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中)。

试试看:

TextView textview = (TextView) findViewById(R.id.textview);
Typeface tf= Typeface.createFromAsset(getAssets(),"fonts/Tahoma.ttf");
textview .setTypeface(tf);