Ресурсы шрифта не работают должным образом со шрифтом при использовании HTML-текстов - PullRequest
2 голосов
/ 27 июня 2019

Я использовал каллиграфию перед ресурсами шрифтов , когда мы видим это, мы перешли к ресурсам шрифтов и все работает хорошо, только одна проблема, которую я получаю, если мой текстовый вид содержимогоАтрибут html и bold () не выделяется, но если я удаляю ресурсы Font через xml и использую программный способ, он работает с тем же шрифтом.

Я могу привести пример, который я использую Шрифтресурсы как показано ниже

font_regular.xml

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

Мой текстовый просмотр

  <TextView
        app:fontFamily="@font/font_regular"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#000000"
        android:textSize="15sp"
        />

Когда я подам заявкуэто html-данные содержат жирный шрифт, все данные поступают с сервера в виде html-данных, таких как пример данных, как показано ниже

Data

<p>Hi i am <b>bold</b></p>

Ожидаемый результат

Привет, я жирный

Но результат будет

Привет, я жирный

Шрифт успешно применяетсяно часть жирного шрифта не становится жирным

Но когда я использую программно через гарнитуру, его работа

Программно

 Typeface typeFace= Typeface.createFromAsset(context.getAssets(),
            "fonts/myfont.otf");

Я заскочил в Google и просмотрел все документы, которые видел через google. Ни один из них не указал мне, как этого добиться с помощью ресурсов Font.

Пожалуйста, помогите мнезнаю, могу ли я добиться этого с помощью ресурсов шрифта

Ответы [ 2 ]

2 голосов
/ 27 июня 2019

Я использовал этот код для достижения аналогичной функциональности в некоторых приложениях, и он действительно работал.Я надеюсь, что это может помочь

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    mDescTextView.setText(Html.fromHtml(myHtmlText, Html.FROM_HTML_MODE_COMPACT));
} else {
    Spanned myHtmlText = HtmlCompat.fromHtml(getContext(), myHtmlText, 0);
    mDescTextView.setText(myHtmlText);
}

Хорошо.Если это не работает для вас и, как вы упомянули в вопросе о работе шрифта при программном добавлении шрифта, у меня есть альтернатива в этом случае.Это может быть не точный ответ, который вы ищете.Но я думаю, что это поможет в долгосрочной перспективе.Нет необходимости устанавливать программный шрифт, а также не нужно добавлять шрифт face в xml.Использование собственного класса textview будет автоматически загружать шрифт везде, также вы можете установить толщину, используя объявленные атрибуты (в values ​​/ attrs.xml).

<com.youpackage.yourapp.view.customview.CustomTextView
    android:id="@+id/txt_email"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginStart="24dp"
    android:layout_marginEnd="24dp"
    android:hint="@string/label_full_name"
    app:customFontThickness="bold"
    android:inputType="textEmailAddress" />

Информацию о настраиваемом классе textview и объявлении атрибута смотрите в этом.https://github.com/pramodpmk/CustomTextView

0 голосов
/ 27 июня 2019

Добавить это

String str = Привет, я + "" + жирный + "";
tv_view.setText (Html.fromHtml (str));

...