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


当前回答

我只想提一下,Android内部字体的地狱即将结束,因为今年在Google IO上,我们终于得到了这个->https://developer.android.com/preview/features/working-with-fonts.html

现在有了一个新的资源类型字体,您可以将所有应用程序字体放在res/fonts文件夹中,然后使用R.font.my_custom_font进行访问,就像您可以访问字符串res值、可绘制res值等一样。您甚至有机会创建字体face xml文件,该文件将由您的自定义字体设置(关于斜体、粗体和下划线属性)。

阅读上面的链接了解更多信息。让我们看看支持。

其他回答

以编程方式将字体添加到TextView的最简单方法是,首先,将字体文件添加到项目中的“资产”文件夹中。例如,字体路径如下所示:assets/fonts/my_font.otf

并将其添加到TextView中:

科特林

val font_path = "fonts/my_font.otf"  

myTypeface = Typeface.createFromAsset(MyApplication.getInstance().assets, font_path)

textView.typeface = myTypeface

Java

String font_path = "fonts/my_font.otf";
Typeface myTypeface = Typeface.createFromAsset(MyApplication.getInstance().assets, font_path)
textView.setTypeface(myTypeface);
<string name="font_family_display_4_material">sans-serif-light</string>
<string name="font_family_display_3_material">sans-serif</string>
<string name="font_family_display_2_material">sans-serif</string>
<string name="font_family_display_1_material">sans-serif</string>
<string name="font_family_headline_material">sans-serif</string>
<string name="font_family_title_material">sans-serif-medium</string>
<string name="font_family_subhead_material">sans-serif</string>
<string name="font_family_menu_material">sans-serif</string>
<string name="font_family_body_2_material">sans-serif-medium</string>
<string name="font_family_body_1_material">sans-serif</string>
<string name="font_family_caption_material">sans-serif</string>
<string name="font_family_button_material">sans-serif-medium</string>

试试看:

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

如果您使用的是Android Studio 3.5+,更改字体非常简单。在“设计”视图上选择文本小部件,并在“属性窗口”上检查字体系列。值下拉列表包含所有可用字体,您可以从中选择一种字体。如果您正在查找Google字体,请单击“更多字体”选项。

属性窗口

谷歌字体

Kotlin代码-从资源文件夹设置自定义字体的文本视图

从res->font->avenir_ext_regular.ttf设置自定义字体

textView!!.typeface = ResourcesCompat.getFont(context!!, R.font.avenir_next_regular)