Android - 为以后的文本设置 EditText 粗体/斜体/下划线

Android - Set EditText Bold / Italic / Underline for the future text

我想将文本格式选项应用到 EditText。选择文本时,我可以应用所有格式,例如粗体、斜体、下划线、删除线、BulletPoint。但是,我想将格式应用于用户将来键入的文本。

我使用了 mEditText.setTypeface(null, Typeface.BOLD) / mEditText.setTypeface(null, Typeface.ITATIC),但它使整个 EditText 变为粗体/斜体。

我只想对单击“粗体/斜体”按钮后键入的文本设置粗体/斜体。

有一些类似的问题,但 none 有答案。

仅适用于粗体:

editText.setTypeface(Typeface.DEFAULT,Typeface.BOLD)

仅斜体:

editText.setTypeface(Typeface.DEFAULT,Typeface.ITALIC)

对于粗体和斜体,

editText.setTypeface(Typeface.DEFAULT,Typeface.BOLD_ITALIC)

您需要使用 span。

editText.doAfterTextChanged() {...
        when(selectedStyle) {
               Italic -> {
                      val spannable = SpannableString(text)
                      spannable.setSpan(Spans.Italic, styleStart, text.length, Spannable.EXCLUSIVE_EXCLUSIVE)
                }
         }
}

这篇文章应该能帮到你 https://medium.com/androiddevelopers/spantastic-text-styling-with-spans-17b0c16b4568

这个问题应该对你的文本监听器有帮助 android on Text Change Listener

当用户按下更改样式的按钮时,然后保存文本长度,以便在 TextWatcher 文本更改后应用所选样式。

也许你应该考虑寻找一些所见即所得的库。