2

我使用 StaticLayout 来处理我的文本,然后显示在 TextView 中。但是当我调用 StaticLayout 的 getHeight 来获取处理的文本高度时,它小于 textview 的真实高度。以下是核心代码:


 private fun createStaticLayout(text: SpannableStringBuilder): StaticLayout {
        val width = measuredWidth - paddingLeft - paddingRight
        return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            StaticLayout.Builder.obtain(text, 0, text.length, paint, width)
                .setAlignment(Layout.Alignment.ALIGN_NORMAL)
                .setIncludePad(includeFontPadding)
                .setLineSpacing(lineSpacingExtra, lineSpacingMultiplier)
                .build()
        } else {
            StaticLayout(
                text,
                paint,
                width,
                Layout.Alignment.ALIGN_NORMAL,
                lineSpacingMultiplier,
                lineSpacingExtra,
                includeFontPadding
            )
        }
    }

 text = tempText2
 layoutParams.height = tempLayout.height + paddingTop + paddingBottom
 requestLayout()

这是日志信息:

staticLayoutHeight -> 237 
lineHeight -> 46 
textViewheight -> 277
textSize -> 39.0 
destiny -> 2.625
4

1 回答 1

0

你的手机是华为吗?我发现vivo是对的,但华为需要wrap

val heightByStaticLayout: Float = heightByStaticLayoutOrigin - (if (staticLayout.lineCount <= 1) 0f else ((staticLayout.lineCount - density) * density))
于 2020-09-08T03:08:55.947 回答