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

时间:2014-01-09 14:43:16

标签: android android-fonts android-typeface

此类帖子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) - 但是如何?

4 个答案:

答案 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>

font folder font family

OLD ANSWER

感谢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>

答案 2 :(得分:4)

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

答案 3 :(得分:3)

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

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

  1. 右键单击res文件夹,然后转到新建&gt; Android资源目录。 将出现“新资源目录”窗口。

  2. 在“资源类型”列表中,选择“字体”,然后单击“确定”。 注意:资源目录的名称必须是font。

  3. Figure 1. Adding the font resource directory

    1. 在字体文件夹中添加字体文件。 下面的文件夹结构会生成R.font.dancing_scriptR.font.lobsterR.font.typo_graphica
    2. Figure 2. Adding the font files in the resource directory

      1. 双击字体文件以在编辑器中预览文件的字体。
      2. Figure 3. Previewing the font file

        要为布局XML文件中的TextView设置字体,请将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