- 常规
- 斜体
- 加粗
- 粗斜体
- 轻
- 轻斜体
- 细体
- 细斜体
- 压缩常规
- 压缩斜体
- 压缩加粗
- 压缩粗斜体
这意味着无法使用例如Roboto-Medium或Roboto-Black字体来设置TextView的样式。
但是为什么Google会添加系统范围的字体,不能用于TextView的样式?肯定有一些方法可以在styles.xml中指定所有Roboto字体(即不必将字体作为资源嵌入并在代码中创建自定义TextView)-但是怎么做呢?
这意味着无法使用例如Roboto-Medium或Roboto-Black字体来设置TextView的样式。
但是为什么Google会添加系统范围的字体,不能用于TextView的样式?肯定有一些方法可以在styles.xml中指定所有Roboto字体(即不必将字体作为资源嵌入并在代码中创建自定义TextView)-但是怎么做呢?
在 Android 5.0 上,您可以使用 sans-serif-medium
设置 Roboto Medium。
此解决方案取自于 Google iosched 2014,在 Android v21 之前的版本中使用 sans-serif
:
values/styles.xml
<style name="MyStyle">
<item name="android:fontFamily">@string/font_fontFamily_medium</item>
</style>
values/fonts.xml
<string name="font_fontFamily_medium">sans-serif</string>
values-v21/fonts.xml
<string name="font_fontFamily_medium">sans-serif-medium</string>
font_textStyle_medium
。 - Martynas Jurkus新方案
在 Google I/O '17 之后,您可以在 res/font 文件夹中创建多个字体系列
<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:app="http://schemas.android.com/apk/res-auto">
<font
app:font="@font/roboto_light"
app:fontStyle="normal"
app:fontWeight="300" />
<font
app:font="@font/roboto_bold"
app:fontStyle="normal"
app:fontWeight="700" />
</font-family>
而且您可以在任何地方使用
<style name="AppTheme.DefaultTextView" parent="android:style/Widget.TextView">
<item name="android:textColor">@color/colorBlack</item>
<item name="android:fontFamily">@font/font_family_roboto</item>
</style>
旧回答
感谢Jakob Eriksson
android:fontFamily="sans-serif" // roboto regular
android:fontFamily="sans-serif-light" // roboto light
android:fontFamily="sans-serif-condensed" // roboto condensed
android:fontFamily="sans-serif-black" // roboto black
android:fontFamily="sans-serif-thin" // roboto thin (android 4.2)
android:fontFamily="sans-serif-medium" // roboto medium (android 5.0)
在样式中:
<style name="AppTheme.DefaultTextView" parent="android:style/Widget.TextView">
<item name="android:textSize">@dimen/text_view_text_size</item>
<item name="android:textColor">@color/black</item>
<item name="android:fontFamily">sans-serif-light</item>
<item name="android:textStyle">normal</item>
</style>
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/gray</item>
<item name="android:textViewStyle">@style/AppTheme.DefaultTextView</item>
</style>
android:fontFamily
是不够的,你还需要指定希望使用的字体,例如thing、light、medium、bold和许多其他字体。Android仅为textStyle
属性提供了normal/italic/bold
默认值。 - user924Support Library 26引入了在XML中使用字体的功能,并且向后兼容到Android API 14。
要将字体添加为资源,请在Android Studio中执行以下步骤:
右键单击res文件夹,然后转到New > Android resource directory。 将出现新的资源目录窗口。
在资源类型列表中选择font,然后单击OK。 注意:资源目录的名称必须为font。
R.font.dancing_script
、R.font.lobster
和R.font.typo_graphica
。TextView
设置字体,需要将fontFamily属性设置为您想要访问的字体文件。<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/lobster"/>
要将字体添加到样式中,请打开styles.xml文件,并将fontFamily属性设置为您想要访问的字体文件。
<style name="customfontstyle" parent="@android:style/TextAppearance.Small">
<item name="android:fontFamily">@font/lobster</item>
如果您不想将字体捆绑在应用程序中,您可以随时查看可下载字体。我建议你使用自定义库,例如Android-RobotoTextView或Calligraphy。 使用其中一个库,你可以在xml中设置视图的字体属性,因此可以将其放入styles.xml文件中。而且它们适用于Android 4.0之前的版本。