Пользовательский шрифт работает с предварительным просмотром XML, но не работает с RecyclerView в Android - PullRequest
0 голосов
/ 28 августа 2018

Код для 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 Preview

XML Preview

Во время выполнения внутри RecyclerView выглядит как на RecylerView

Rendered on RecylerView

1 Ответ

0 голосов
/ 29 августа 2018

в вашем @ 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 .

EDIT

В документации они упоминали:

андроид: FontWeight Integer. Вес шрифта. Этот атрибут используется, когда шрифт загружается в стек шрифтов и переопределяет любую информацию о весе в таблицах заголовков шрифта. Значение атрибута должно быть положительным числом, кратным 100, и между 100 и 900 включительно. Если вы не укажете атрибут, приложение использует значение из таблиц заголовка шрифта. Наиболее распространенные значения: 400 для обычного веса и 700 для жирного.

В вашем файле шрифта вы упомянули вес шрифта 400, который обычно используется для обычного. Попробуйте с 700 шрифтовым весом.

...