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

cki*_*sen 62 android android-fonts android-typeface

这样的帖子如何更改Android中TextView的fontFamily表明,您可以在Android 4.2中的styles.xml中指定的Roboto字体的变体归结为以下内容:

  • 定期
  • 斜体
  • 胆大
  • 加粗斜体
  • 光斜体
  • 薄斜体
  • 经常凝聚
  • 浓缩斜体
  • 浓缩大胆
  • 浓缩大胆的斜体

这就省去了使用例如TextViews的样式.Roboto-Medium或Roboto-Black字体.

但是为什么谷歌会添加不能用于TextView样式的系统范围的字体呢?当然必须有一些方法来指定styles.xml中的所有Roboto字体(即,不必将字体嵌入为Assets并在代码中创建自定义TextView) - 但是如何?

rci*_*ati 91

在Android 5.0上,您可以设置Roboto Medium sans-serif-medium.

此解决方案取自Google iosched 2014,sans-serif在Android pre-v21上使用:

价值观/ styles.xml

<style name="MyStyle">
    <item name="android:fontFamily">@string/font_fontFamily_medium</item>
</style>
Run Code Online (Sandbox Code Playgroud)

值/ fonts.xml

<string name="font_fontFamily_medium">sans-serif</string>
Run Code Online (Sandbox Code Playgroud)

值-V21/fonts.xml

<string name="font_fontFamily_medium">sans-serif-medium</string>
Run Code Online (Sandbox Code Playgroud)


Abr*_*yev 37

感谢Jakob Eriksson

如何在Android中更改TextView的fontFamily

<?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>
Run Code Online (Sandbox Code Playgroud)

很有型:

 <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>
Run Code Online (Sandbox Code Playgroud)

在应用主题:

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)
Run Code Online (Sandbox Code Playgroud)


And*_*tor 5

支持库 26 引入了使用 XML 中的字体,并且向后兼容 Android API 14。

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

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

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

图 1. 添加字体资源目录

  1. 将字体文件添加到字体文件夹中。下面的文件夹结构生成R.font.dancing_scriptR.font.lobster、 和R.font.typo_graphica

图 2. 在资源目录中添加字体文件

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

图 3. 预览字体文件

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

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:fontFamily="@font/lobster"/>
Run Code Online (Sandbox Code Playgroud)

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

图 4. 在布局预览中预览字体

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

<style name="customfontstyle" parent="@android:style/TextAppearance.Small">
<item name="android:fontFamily">@font/lobster</item>
Run Code Online (Sandbox Code Playgroud)

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


Ram*_*mpo 4

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