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

如何在android studio中制作一个文本加粗的菜单项,android,android-studio,kotlin,android-edittext,Android,Android Studio,Kotlin,Android Edittext,我目前正在尝试在我的应用程序中创建menuitem,使edittext的突出显示文本在按下时变为粗体。此时,按钮可以工作,但每次按下按钮时,它都会删除以前的粗体文本 使文本加粗的代码 fun makeTextBold(editText: EditText) { val wholeText = editText.text.toString() val start = editText.selectionStart val end = editText.selectionEn

我目前正在尝试在我的应用程序中创建menuitem,使edittext的突出显示文本在按下时变为粗体。此时,按钮可以工作,但每次按下按钮时,它都会删除以前的粗体文本

使文本加粗的代码

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
}
所以如果文本现在是这样的话

我想加粗“文本”以及“像这样”,它将变为:

所以如果文本现在是这样的话

而不是:

所以如果文本现在是这样的话


我知道这可能是因为我每次单击按钮都会创建一个新的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)
}

我想通过调用
editText.text
上的
toString()
可以清除所有需要保留的格式。尝试删除它,然后直接在
wholeText
上调用
setSpan
,就这么简单!为帮助干杯,我该如何回答?