Java 使用选择和文本进行Shift
我正在用Java 使用选择和文本进行Shift,java,android,android-layout,kotlin,spannablestring,Java,Android,Android Layout,Kotlin,Spannablestring,我正在用SpannableString制作一个文本编辑器,其中包含lineHeight或baselineShift等属性。为此,我使用了StyleSpan和LineHeightSpan 问题在于,它似乎在高亮显示选择或文本光标与文本之间发生了移动。所以它给了我一些奇怪的行为,比如: class LineHeightFactorSpan( private val marginBottom: Int ) : LineHeightSpan { override fun cho
SpannableString
制作一个文本编辑器,其中包含lineHeight
或baselineShift
等属性。为此,我使用了StyleSpan
和LineHeightSpan
问题在于,它似乎在高亮显示选择或文本光标与文本之间发生了移动。所以它给了我一些奇怪的行为,比如:
class LineHeightFactorSpan(
private val marginBottom: Int
) : LineHeightSpan {
override fun chooseHeight(
text: CharSequence?,
start: Int,
end: Int,
spanstartv: Int,
lineHeight: Int,
fm: FontMetricsInt?
) {
fm?.let {
it.descent = it.descent + marginBottom
it.bottom = it.descent + marginBottom
}
}
}
更烦人的是,我必须点击/选择突出显示区域的位置来选择/编辑相应的文本
我怎样才能避免这种转变?布局似乎没有使用textPaint
,而是将原始文本牢记在心
谢谢你的帮助,祝你度过愉快的一天
编辑:信息
问题似乎来自于我对marginBottom
的实现。为此,我使用LineHeightSpan
如下所示:
class LineHeightFactorSpan(
private val marginBottom: Int
) : LineHeightSpan {
override fun chooseHeight(
text: CharSequence?,
start: Int,
end: Int,
spanstartv: Int,
lineHeight: Int,
fm: FontMetricsInt?
) {
fm?.let {
it.descent = it.descent + marginBottom
it.bottom = it.descent + marginBottom
}
}
}