如何在 android studio 中制作一个使文本加粗的菜单项

How do you make a menuitem in android studio that makes text bold

我目前正在尝试在我的应用程序中创建菜单项,以便在按下时使编辑文本的突出显示文本变为粗体。目前,该按钮有效,但每次按下该按钮时都会删除之前的粗体文本。

将文本加粗的代码。

fun makeTextBold(editText: EditText) {
    val wholeText = editText.text.toString()
    val start = editText.selectionStart
    val end = editText.selectionEnd
    val ssb = SpannableStringBuilder(wholeText)

    ssb.setSpan(StyleSpan(Typeface.BOLD),start,end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
    editText.text = ssb

}

菜单项代码。

override fun onOptionsItemSelected(item: MenuItem): Boolean {
    when (item.itemId) {
        R.id.action_bold -> makeTextBold(characterNotesEditText)
    }
    return true
}

因此,如果文本当前 像这样

我想加粗 'the text' 以及 'like this' 它将更改为:

所以如果 文本 当前是这样的

而不是:

所以如果 文本 目前是这样的

我知道这可能是因为我每次单击按钮时都会创建一个新的 SpannableStringBuilder,但我正在努力寻找解决该问题的方法 - 我们将不胜感激。

直接在editText.text上调用setSpan,而不是每次都创建一个新的SpannableStringBuilder

fun makeTextBold(editText: EditText) {
    val wholeText = editText.text
    val start = editText.selectionStart
    val end = editText.selectionEnd

    wholeText.setSpan(StyleSpan(Typeface.BOLD),start,end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
}