Android пользовательский шрифт не будет выделен жирным шрифтом, если это не сделано программно - PullRequest
0 голосов
/ 24 января 2020

Как видно из названия, у меня есть пользовательские шрифты для обычного, полужирного и т. Д. c. Когда я устанавливаю шрифт полужирный или itali c в xml, он будет отображаться в дизайне, но не будет отображаться на реальном устройстве (Samsung galaxy s9). Я испробовал несколько разных стратегий, и единственный способ заставить его работать правильно - это установить шрифт программно.

Typeface boldFont = ResourcesCompat.getFont(getContext(), R.font.cogito_bold);
testTextView.setTypeface(boldFont);

Вот где макет xml для textview:

<TextView
    android:id="@+id/testText"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_marginStart="20dp"
    android:layout_marginEnd="20dp"
    android:layout_weight="4"
    android:autoSizeMaxTextSize="44sp"
    android:autoSizeMinTextSize="20sp"
    android:autoSizeStepGranularity="2sp"
    android:autoSizeTextType="uniform"
    android:textSize="42sp"
    android:fontFamily="@font/cogito_font"
    android:textStyle="bold"
    android:text="Test Words"
    android:textColor="@color/wb_white" />

Вот мое семейство нестандартных шрифтов, и затем у меня есть файлы .otf в том же файле res / каталог шрифтов. Я также попытался просто установить шрифтовую семью textview непосредственно в cogito_bold.otf, но безуспешно.

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

    <font
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:font="@font/cogito_italic"
        android:fontStyle="italic"
        android:fontWeight="400"
        app:font="@font/cogito_italic"
        app:fontStyle="italic"
        app:fontWeight="400" />

    <font
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:font="@font/cogito_bold"
        android:fontStyle="normal"
        android:fontWeight="700"
        app:font="@font/cogito_bold"
        app:fontStyle="normal"
        app:fontWeight="700" />
</font-family>

1 Ответ

0 голосов
/ 05 февраля 2020

Вы можете сделать это без создания семейства шрифтов. Просто добавьте шрифты в каталог res> font .

app_font_bold.ttf

app_font_regular.ttf

и вызовите шрифт XML.

android:fontFamily="@font/app_font_bold"
...