Как добавить стиль шрифта в textview android kotlin - PullRequest
1 голос
/ 05 мая 2020

Мне нужна помощь, я застрял в этом. Мое требование: мне нужно добавить текст во всплывающую подсказку. Я действительно это сделал. Но текст включает в себя многострочный текст, а также некоторые строки с жирным шрифтом, другие строки с обычным стилем с настраиваемым стилем шрифта. По приведенному ниже коду, который я использую, я могу добавить жирный шрифт, itali c и обычный стиль. Но мне нужно добавить в текст собственный стиль шрифта. Пожалуйста, взгляните на мой код ниже.

textViewToShow.setOnClickListener { view ->

    val tfBold = Typeface.createFromAsset(
        context!!.assets,
        "fonts/myriad_pro_bold.ttf"
    )

    val tfRegular = Typeface.createFromAsset(
        context!!.assets,
        "fonts/myriad_pro_regular.ttf"
    )

    var string1 = “Item show in Bold style”
    var string2 = “Item show in Regular style”
    var string3 = “Item show in Regular style with item description”

    val holesTextView = Html.fromHtml("<b>" + string1 + "</b> <br><br> <b><i>"+ string2 + "</i></b> " + string3)
    showToolTip(view, holesTextView)

}

    private fun showToolTip(view: View, holesTextView: Spanned) {
        val builder: Tooltip.Builder =
            Tooltip.Builder(view, R.style.Tooltip)
                .setText(holesTextView)
        builder.show()
    }

Любые решения / предложения приветствуются

1 Ответ

2 голосов
/ 05 мая 2020

Я бы создал семейство шрифтов

<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:android="http://schemas.android.com/apk/res/android">
    <font
        android:fontStyle="normal"
        android:fontWeight="400"
        android:font="@font/myriad_pro_regular" />
    <font
        android:fontStyle="italic"
        android:fontWeight="400"
        android:font="@font/myriad_pro_italic" />
    <font
        android:fontStyle="normal"
        android:fontWeight="700"
        android:font="@font/myriad_pro_bold" />
</font-family>

после ответа Как создать собственное семейство шрифтов с полужирным шрифтом для полужирного шрифта.

И затем вы можете назначить семейство шрифтов в макете:

<EditText
    android:fontFamily="@font/mycustomfont"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Hello, World!" />

Или программно:

val typeface = ResourcesCompat.getFont(context, R.font.mycustomfont)
holesTextView.setTypeface(typeface)

Или в случае всплывающей подсказки используя свой метод setTypeface():

val typeface = ResourcesCompat.getFont(context, R.font.mycustomfont)
val builder: Tooltip.Builder = Tooltip.Builder(view, R.style.Tooltip)
    .setText(holesTextView)
    .setTypeface(typeface)
    builder.show()

И используйте HtmlCompat.from Html как Html .from Html устарело:

val holesTextView = HtmlCompat.fromHtml("<b>" + string1 + "</b> <br><br> <b><i>"+ string2 + "</i></b> " + string3, HtmlCompat.FROM_HTML_MODE_LEGACY)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...