From e63d93e97395d787512b6b1898cc077c878fa014 Mon Sep 17 00:00:00 2001 From: Igor Furgala Date: Sat, 25 Oct 2025 13:26:36 +0200 Subject: [PATCH] fix: break strategy - layout calculation --- .../swmansion/enriched/EnrichedTextInputView.kt | 5 +++++ .../enriched/EnrichedTextInputViewLayoutManager.kt | 14 ++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/android/src/main/java/com/swmansion/enriched/EnrichedTextInputView.kt b/android/src/main/java/com/swmansion/enriched/EnrichedTextInputView.kt index ca98ba4f6..edde5a406 100644 --- a/android/src/main/java/com/swmansion/enriched/EnrichedTextInputView.kt +++ b/android/src/main/java/com/swmansion/enriched/EnrichedTextInputView.kt @@ -7,6 +7,7 @@ import android.graphics.BlendMode import android.graphics.BlendModeColorFilter import android.graphics.Color import android.graphics.Rect +import android.graphics.text.LineBreaker import android.os.Build import android.text.InputType import android.text.Spannable @@ -102,6 +103,10 @@ class EnrichedTextInputView : AppCompatEditText { gravity = Gravity.TOP or Gravity.START inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_MULTI_LINE + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + breakStrategy = LineBreaker.BREAK_STRATEGY_HIGH_QUALITY + } + setPadding(0, 0, 0, 0) setBackgroundColor(Color.TRANSPARENT) diff --git a/android/src/main/java/com/swmansion/enriched/EnrichedTextInputViewLayoutManager.kt b/android/src/main/java/com/swmansion/enriched/EnrichedTextInputViewLayoutManager.kt index 3077b92c5..c5e304ba3 100644 --- a/android/src/main/java/com/swmansion/enriched/EnrichedTextInputViewLayoutManager.kt +++ b/android/src/main/java/com/swmansion/enriched/EnrichedTextInputViewLayoutManager.kt @@ -1,5 +1,7 @@ package com.swmansion.enriched +import android.graphics.text.LineBreaker +import android.os.Build import android.text.Editable import android.text.StaticLayout import com.facebook.react.bridge.Arguments @@ -50,12 +52,20 @@ class EnrichedTextInputViewLayoutManager(private val view: EnrichedTextInputView val paint = view.paint val textLength = text.length - val staticLayout = StaticLayout.Builder + val builder = StaticLayout.Builder .obtain(text, 0, textLength, paint, maxWidth.toInt()) .setIncludePad(true) .setLineSpacing(0f, 1f) - .build() + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + builder.setBreakStrategy(LineBreaker.BREAK_STRATEGY_HIGH_QUALITY) + } + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + builder.setUseLineSpacingFromFallbacks(true) + } + + val staticLayout = builder.build() val heightInSP = PixelUtil.toDIPFromPixel(staticLayout.height.toFloat()) val widthInSP = PixelUtil.toDIPFromPixel(maxWidth)