diff --git a/app/src/main/kotlin/bums/lunatic/launcher/home/tokiz/TokiFragment.kt b/app/src/main/kotlin/bums/lunatic/launcher/home/tokiz/TokiFragment.kt index 76fc3ede..4c0701aa 100644 --- a/app/src/main/kotlin/bums/lunatic/launcher/home/tokiz/TokiFragment.kt +++ b/app/src/main/kotlin/bums/lunatic/launcher/home/tokiz/TokiFragment.kt @@ -573,13 +573,14 @@ class TokiFragment : Fragment(), PagedTextViewInterface { override fun onStart() { super.onStart() + val nullCursor = PointerIcon.getSystemIcon(requireContext(), PointerIcon.TYPE_NULL) + binding.root.setPointerIcon(nullCursor) + loadLastInfo() } override fun onResume() { super.onResume() - val nullCursor = PointerIcon.getSystemIcon(requireContext(), PointerIcon.TYPE_NULL) - binding.root.setPointerIcon(nullCursor) - loadLastInfo() + } fun getLastinfo() : LastInfo? { diff --git a/app/src/main/kotlin/bums/lunatic/launcher/home/tokiz/view/PagedTextLayout.kt b/app/src/main/kotlin/bums/lunatic/launcher/home/tokiz/view/PagedTextLayout.kt index d3173d58..29ed37c7 100644 --- a/app/src/main/kotlin/bums/lunatic/launcher/home/tokiz/view/PagedTextLayout.kt +++ b/app/src/main/kotlin/bums/lunatic/launcher/home/tokiz/view/PagedTextLayout.kt @@ -79,8 +79,8 @@ class PagedTextLayout : ConstraintLayout , PagedTextGenerateInterface { mainTextView!!.width - (mainTextView!!.paddingLeft + mainTextView!!.paddingRight) val contentHeight = mainTextView!!.height - (mainTextView!!.paddingTop + mainTextView!!.paddingBottom) - val pages = paginateAsync(text, contentWidth, contentHeight) - pageList.addAll(pages) + val pages = paginateAsync(cleanText(text), contentWidth, contentHeight) + pageList.addAll(pages.map { it.trim() }) Blog.LOGE("pages >>> ${pages.size}") setPageBy(0) } @@ -90,6 +90,17 @@ class PagedTextLayout : ConstraintLayout , PagedTextGenerateInterface { } summaryText = summary } + + private fun cleanText(text: String): String { + return text + // 1. 전체 텍스트의 앞/뒤 공백 제거 + .trim() + // 2. 중간에 포함된 '빈 줄' 제거 + // (\n\s*)+\n : 줄바꿈(\n) 뒤에 공백(\s*)이 오고 다시 줄바꿈이 반복되는 패턴을 찾습니다. + // 이것을 단일 줄바꿈(\n)으로 교체하여 빈 라인을 없애고 문단만 나눕니다. + .replace(Regex("(\\n\\n\\s*)+\\n"), "\n") + } + suspend fun paginateAsync(text: CharSequence, width: Int, height: Int): List = withContext(Dispatchers.Default) { val resultPages = ArrayList() val paint = mainTextView?.paint ?: TextPaint() @@ -98,6 +109,7 @@ class PagedTextLayout : ConstraintLayout , PagedTextGenerateInterface { val letterSpacing = mainTextView?.letterSpacing ?: 1.0f val includePad = false Blog.LOGE("text ${text.length}, width $width, height $height") + // 1. 전체 텍스트에 대한 StaticLayout 생성 (API 버전에 따른 분기 처리 권장) val layout = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { StaticLayout.Builder.obtain(text, 0, text.length, paint, width) diff --git a/app/src/main/res/layout/layout_textviewer.xml b/app/src/main/res/layout/layout_textviewer.xml index b377d4b8..b26241b8 100644 --- a/app/src/main/res/layout/layout_textviewer.xml +++ b/app/src/main/res/layout/layout_textviewer.xml @@ -3,11 +3,9 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_margin="5dp" xmlns:app="http://schemas.android.com/apk/res-auto">