如何在android studio中制作一个文本加粗的菜单项
我目前正在尝试在我的应用程序中创建menuitem,使edittext的突出显示文本在按下时变为粗体。此时,按钮可以工作,但每次按下按钮时,它都会删除以前的粗体文本 使文本加粗的代码如何在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
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
,就这么简单!为帮助干杯,我该如何回答?