所以我想在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);
一种简单的方法是在项目中添加所需的字体。
转到文件->新建->新建资源目录选择字体
这将在资源中创建一个新目录,字体。
下载字体(.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);
对于android studio 3及以上版本,您可以使用此样式,然后在应用程序中查看所有文本字体更改。
在style.xml中创建此样式:
<!--OverRide all textView font-->
<style name="defaultTextViewStyle" parent="android:Widget.TextView">
<item name="android:fontFamily">@font/your_custom_font</item>
</style>
然后在主题中使用它:
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:textViewStyle">@style/defaultTextViewStyle</item>
</style>
在这里,您可以看到所有可用的字体系列值及其对应的字体文件名(该文件在android 5.0+中使用)。在移动设备上,您可以在以下位置找到它:
/system/etc/fonts.xml (for 5.0+)
(对于使用此版本的android 4.4及以下版本,但我认为fonts.xml格式更清晰,易于理解。)
例如
<!-- first font is default -->
20 <family name="sans-serif">
21 <font weight="100" style="normal">Roboto-Thin.ttf</font>
22 <font weight="100" style="italic">Roboto-ThinItalic.ttf</font>
23 <font weight="300" style="normal">Roboto-Light.ttf</font>
24 <font weight="300" style="italic">Roboto-LightItalic.ttf</font>
25 <font weight="400" style="normal">Roboto-Regular.ttf</font>
26 <font weight="400" style="italic">Roboto-Italic.ttf</font>
27 <font weight="500" style="normal">Roboto-Medium.ttf</font>
28 <font weight="500" style="italic">Roboto-MediumItalic.ttf</font>
29 <font weight="900" style="normal">Roboto-Black.ttf</font>
30 <font weight="900" style="italic">Roboto-BlackItalic.ttf</font>
31 <font weight="700" style="normal">Roboto-Bold.ttf</font>
32 <font weight="700" style="italic">Roboto-BoldItalic.ttf</font>
33 </family>
family标记的name属性name=“sans-serif”定义了可以在android中使用的值:fontFamily。
字体标记定义对应的字体文件。
在这种情况下,可以忽略<!--下的源代码回退字体-->,用于字体的回退逻辑。