首页 > 解决方案 > 如何在edittext中以编程方式正确更改字体?

问题描述

我正在尝试创建一个基本的文本编辑器。我几乎实现了我想做的事情,但存在一些问题。当我按下“B”按钮时,它会使文本变为粗体。如果我继续写而不给空间并再次按“B”按钮,我写的所有字母都会正常。但我想保持已经粗体的字母粗体。当我给空间时,它会按我的意愿工作,变为粗体、斜体或正常。以下是我的代码的一些部分:

 editor.textChangedListener {
        beforeTextChanged { _, _, _, _ ->
            val length = editor.text?.length
            length?.let {
                if (it > 0) {
                    val styleSpan = when {
                        isBold && isItalic -> StyleSpan(Typeface.BOLD_ITALIC)
                        isBold && !isItalic -> StyleSpan(Typeface.BOLD)
                        !isBold && isItalic -> StyleSpan(Typeface.ITALIC)
                        else -> StyleSpan(Typeface.NORMAL)
                    }
                    val spannable = Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
                    if (it < start) start = 0
                    editor.text?.setSpan(styleSpan, start, it, spannable)
                }
            }
        }
    }
    boldButton.onClick {
        isBold = !isBold
        val image = when (isBold) {
            true -> R.drawable.ic_bold_active
            false -> R.drawable.ic_bold
        }
        start = editor.text!!.length
        boldButton.setImageResource(image)
    }

标签: androidkotlinandroid-edittexteditor

解决方案


要更改字体,您可以使用类似这样的东西。

TextView tv = (TextView) findViewById(R.id.tvname);
Typeface face = Typeface.createFromAsset(getAssets(),
        "fonts/epimodem.ttf");
tv.setTypeface(face);

你也可以尝试 html 相同的

textView.setText(Html.fromHtml("<h2>Title</h2><br><p>Description here</p>", Html.FROM_HTML_MODE_COMPACT));

推荐阅读