此类帖子How to change fontFamily of TextView in Android表明,您可以在Android 4.2的styles.xml中指定的Roboto字体变体归结为以下内容:
这样就省去了使用例如TextViews的样式。 Roboto-Medium或Roboto-Black字体。
但是为什么谷歌会添加不能用于TextView样式的系统范围的字体?当然必须有一些方法来指定styles.xml中的所有Roboto字体(即,不必将字体嵌入为Assets并在代码中创建自定义TextView) - 但是如何?
答案 0 :(得分:89)
在Android 5.0上,您可以使用sans-serif-medium
设置Roboto Medium。
此解决方案取自Google iosched 2014,在Android pre-v21上使用sans-serif
:
值/ styles.xml
<style name="MyStyle">
<item name="android:fontFamily">@string/font_fontFamily_medium</item>
</style>
值/ fonts.xml
<string name="font_fontFamily_medium">sans-serif</string>
值-V21 / fonts.xml
<string name="font_fontFamily_medium">sans-serif-medium</string>
答案 1 :(得分:32)
新解决方案
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>
OLD ANSWER
感谢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>
答案 2 :(得分:4)
我建议您使用自定义库,例如Android-RobotoTextView或Calligraphy。 使用其中一个,您可以使用属性在xml中设置视图的字体,以便您可以将其放入styles.xml中。它们适用于以前版本的Android而不是4.0
答案 3 :(得分:3)
支持库26引入了using fonts in XML,它向后兼容Android API 14.
要将字体添加为资源,请在Android Studio中执行以下步骤:
右键单击res文件夹,然后转到新建&gt; Android资源目录。 将出现“新资源目录”窗口。
在“资源类型”列表中,选择“字体”,然后单击“确定”。 注意:资源目录的名称必须是font。
R.font.dancing_script
,R.font.lobster
和R.font.typo_graphica
。要为布局XML文件中的TextView
设置字体,请将fontFamily属性设置为您要访问的字体文件。
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/lobster"/>
Android Studio布局预览允许您预览TextView中的字体集。
要向样式添加字体,请打开styles.xml,并将fontFamily属性设置为您要访问的字体文件。
<style name="customfontstyle" parent="@android:style/TextAppearance.Small">
<item name="android:fontFamily">@font/lobster</item>
如果您不想在应用中捆绑字体,可以随时查看Downloadable Fonts