我如何指定例如。 styles.xml中的Roboto-Medium或Roboto-Black

问题描述 投票:58回答:4

像这样的帖子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) - 但是如何?

android android-fonts android-typeface
4个回答
90
投票

在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>

33
投票

新解决方案

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>

font folder font family

老答复

感谢Jakob Eriksson

original answer

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>

4
投票

我建议你使用自定义库,如Android-RobotoTextViewCalligraphy。使用其中一个,您可以使用属性在xml中设置视图的字体,以便您可以将其放入styles.xml中。它们适用于以前版本的Android而不是4.0


3
投票

支持库26引入了using fonts in XML,它向后兼容Android API 14。

要将字体添加为资源,请在Android Studio中执行以下步骤:

  1. 右键单击res文件夹,然后转到“新建”>“Android资源目录”。将出现“新建资源目录”窗口。
  2. 在“资源类型”列表中,选择“字体”,然后单击“确定”。注意:资源目录的名称必须是font。

Figure 1. Adding the font resource directory

  1. 在字体文件夹中添加字体文件。下面的文件夹结构生成R.font.dancing_scriptR.font.lobsterR.font.typo_graphica

Figure 2. Adding the font files in the resource directory

  1. 双击字体文件以在编辑器中预览文件的字体。

Figure 3. Previewing the font file

要为TextView设置字体,请在布局XML文件中将fontFamily属性设置为要访问的字体文件。

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:fontFamily="@font/lobster"/>

Android Studio布局预览允许您预览TextView中的字体集。

Figure 4. Previewing fonts in layout preview

要向样式添加字体,请打开styles.xml,并将fontFamily属性设置为要访问的字体文件。

<style name="customfontstyle" parent="@android:style/TextAppearance.Small">
<item name="android:fontFamily">@font/lobster</item>

如果您不想在应用程序中捆绑字体,可以随时查看Downloadable Fonts

© www.soinside.com 2019 - 2024. All rights reserved.