自定义字体可用于XML预览,但不适用于Android中的RecyclerView

时间:2018-08-28 10:27:34

标签: android android-recyclerview textview custom-font

TextView的代码,在style="@style/SbTextView.ListTitle"上声明了自定义字体

<TextView
    android:id="@+id/symbolCompany"
    style="@style/SbTextView.ListTitle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:singleLine="true"
    android:typeface="normal"
    tools:ignore="MissingPrefix"
    tools:text="@sample/watchlist_companies.json/data/symbol" />

使用自定义字体@font/sb_proxima BOLD textStyle的样式:

<style name="SbTextView.ListTitle" parent="SbTextView">
    <item name="android:fontFamily">@font/sb_proxima</item>
    <item name="android:textStyle">bold</item>
    <item name="android:textSize">@dimen/text_body</item>
    <item name="android:textColor">@color/contentcolor</item>
    <item name="android:lineSpacingMultiplier">1.15</item>
</style>

父样式SbTextView

<style name="SbTextView" parent="@android:style/TextAppearance"/>

字体家族@font/sb_proxima

<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <font
        android:font="@font/proxima_nova_regular"
        android:fontStyle="normal"
        android:fontWeight="400"

        app:font="@font/proxima_nova_regular"
        app:fontStyle="normal"
        app:fontWeight="400"/>

    <font
        android:font="@font/proxima_nova_regular"
        android:fontStyle="italic"
        android:fontWeight="400"

        app:font="@font/proxima_nova_regular"
        app:fontStyle="normal"
        app:fontWeight="400"/>

</font-family>

在设计预览中(在XML上)呈现的内容如下图所示

XML预览

XML Preview

RecyclerView内的运行时,看起来像在RecylerView上呈现的

Rendered on RecylerView

1 个答案:

答案 0 :(得分:1)

在您的 @ font / sb_proxima 文件中,您需要定义如下粗体:

<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">

<font
    android:font="@font/proxima_nova_regular"
    android:fontStyle="normal"
    android:fontWeight="400"

    app:font="@font/proxima_nova_regular"
    app:fontStyle="normal"
    app:fontWeight="400"/>

<font
    android:font="@font/proxima_nova_regular"
    android:fontStyle="italic"
    android:fontWeight="400"

    app:font="@font/proxima_nova_regular"
    app:fontStyle="normal"
    app:fontWeight="400"/>
<font
    android:font="@font/proxima_nova_bold"
    android:fontStyle="bold"
    android:fontWeight="400"

    app:font="@font/proxima_nova_bold"
    app:fontStyle="normal"
    app:fontWeight="400"/>

</font-family>

此外,请不要忘记包含 proxima_nova_bold 文件。

编辑

documentation中,他们提到:

  

android:fontWeight   整数。字体的粗细。当字体加载到字体堆栈中时,将使用此属性,并覆盖字体标题表中的所有粗细信息。该属性值必须是一个正数,为100的倍数,且介于100和900之间(含100和900)。如果您未指定属性,则应用会使用字体标题表中的值。最常见的值是常规粗细为400,粗体粗细为700。

在字体文件中,您提到的字体粗细为400,通常用于常规字体。尝试使用700的字体粗细。