【发布时间】:2019-12-31 06:47:16
【问题描述】:
我正在尝试创建一个基本的文本编辑器。我几乎实现了我想做的事情,但存在一些问题。当我按下“B”按钮时,它会使文本变为粗体。如果我继续写而不给空间并再次按“B”按钮,我写的所有字母都会正常。但我想保持已经粗体的字母粗体。当我给空间时,它会按我的意愿工作,变为粗体、斜体或正常。以下是我的部分代码:
editor.textChangedListener {
beforeTextChanged { _, _, _, _ ->
val length = editor.text?.length
length?.let {
if (it > 0) {
val styleSpan = when {
isBold && isItalic -> StyleSpan(Typeface.BOLD_ITALIC)
isBold && !isItalic -> StyleSpan(Typeface.BOLD)
!isBold && isItalic -> StyleSpan(Typeface.ITALIC)
else -> StyleSpan(Typeface.NORMAL)
}
val spannable = Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
if (it < start) start = 0
editor.text?.setSpan(styleSpan, start, it, spannable)
}
}
}
}
boldButton.onClick {
isBold = !isBold
val image = when (isBold) {
true -> R.drawable.ic_bold_active
false -> R.drawable.ic_bold
}
start = editor.text!!.length
boldButton.setImageResource(image)
}
【问题讨论】:
-
问题出在哪里??我在这里没有看到任何明确的问题。
-
我刚刚尝试了这个解决方案。我的问题是我不想更改所有文本的字体。当我单击粗体时,它会使所有字符串变为粗体。这就是为什么我将 setSpan 与索引一起使用。但它也不起作用。
标签: android kotlin android-edittext editor