From 55a0b209ecbfcbdfa6ab61c9ef3394b350ef9ca6 Mon Sep 17 00:00:00 2001 From: lunaticbum <> Date: Mon, 5 Aug 2024 18:03:14 +0900 Subject: [PATCH] ... --- .../mime/dualscreenview/view/PagedTextView.kt | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/mime/dualscreenview/view/PagedTextView.kt b/app/src/main/java/com/mime/dualscreenview/view/PagedTextView.kt index 0714921..504203b 100644 --- a/app/src/main/java/com/mime/dualscreenview/view/PagedTextView.kt +++ b/app/src/main/java/com/mime/dualscreenview/view/PagedTextView.kt @@ -8,6 +8,10 @@ import android.text.Layout import android.text.StaticLayout import android.util.AttributeSet import androidx.appcompat.widget.AppCompatTextView +import androidx.core.view.marginBottom +import androidx.core.view.marginLeft +import androidx.core.view.marginRight +import androidx.core.view.marginTop import com.mime.dualscreenview.common.Blog import kotlinx.coroutines.MainScope import kotlinx.coroutines.launch @@ -149,7 +153,7 @@ class PagedTextView : AppCompatTextView { override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) { super.onSizeChanged(w, h, oldw, oldh) Blog.LOGD(log = "onSizeChanged>> ${this::class.java.name}") - pageHeight = h + pageHeight = ((h - (marginTop + marginBottom + paddingTop + paddingBottom)) * 0.85f).toInt() } override fun onLayout(changed: Boolean, left: Int, top: Int, right: Int, bottom: Int) { @@ -175,9 +179,9 @@ class PagedTextView : AppCompatTextView { pageList.clear() Blog.LOGD(log = "paginate>> ${this::class.java.name} && ${layout.text}") val layout = from(layout) - val lines = if(min(maxLines, layout.lineCount) > 10) {min(maxLines, layout.lineCount) - 2} else {min(maxLines, layout.lineCount)} + val lines = if(min(maxLines, layout.lineCount) > 10) {min(maxLines, layout.lineCount) - 1} else {min(maxLines, layout.lineCount)} var startOffset = 0 - val heightWithoutPaddings = (pageHeight - (paddingTop + paddingBottom)) * 0.85 + val heightWithoutPaddings = pageHeight - (marginTop + marginBottom + paddingTop + paddingBottom) var height = heightWithoutPaddings for (i in 0 until lines) { @@ -191,8 +195,13 @@ class PagedTextView : AppCompatTextView { if (i == lines - 1) { pageList.add( - layout.text.subSequence(startOffset, layout.getLineEnd(i)) + if(layout.lineCount > i) { + layout.text.subSequence(startOffset, layout.getLineEnd(i + 1)) + } else { + layout.text.subSequence(startOffset, layout.getLineEnd(i)) + } ) + } } mPagedTextGenerateInterface?.completePagination(pageList) @@ -214,7 +223,7 @@ class PagedTextView : AppCompatTextView { )) } else { StaticLayout.Builder - .obtain(originalText, 0, originalText.length, paint, layout.width - (paddingLeft + paddingRight)) + .obtain(originalText, 0, originalText.length, paint, ((layout.width - (paddingLeft + paddingRight + marginLeft + marginRight) * 0.85f)).toInt()) .setAlignment(layout.alignment) .setLineSpacing(lineSpacingExtra, lineSpacingMultiplier) .setIncludePad(includeFontPadding)