Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用选择和文本进行Shift_Java_Android_Android Layout_Kotlin_Spannablestring - Fatal编程技术网

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
        }
    }
}