你如何在android工作室中制作一个菜单项,使文本加粗



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

使文本加粗的代码。

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
}

因此,如果文本当前如下

我想用粗体显示"文本"one_answers"像这样",它将改为:

因此,如果文本当前类似于此

代替:

因此,如果文本当前为,则

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

相关内容

最新更新