kunfei 4 лет назад
Родитель
Сommit
155102ed6b

+ 3 - 2
app/src/main/java/io/legado/app/ui/book/read/page/ContentTextView.kt

@@ -396,9 +396,10 @@ class ContentTextView(context: Context, attrs: AttributeSet?) : View(context, at
                     val compareEnd = pos.compare(selectEnd)
                     if (compareStart >= 0 && compareEnd <= 0) {
                         builder.append(textChar.charData)
-                        if (compareEnd != 0
+                        if (
+                            textLine.isLastLine
                             && charIndex == textLine.charSize - 1
-                            && textLine.text.endsWith("\n")
+                            && compareEnd != 0
                         ) {
                             builder.append("\n")
                         }

+ 4 - 4
app/src/main/java/io/legado/app/ui/book/read/page/ReadView.kt

@@ -276,12 +276,12 @@ class ReadView(context: Context, attrs: AttributeSet) :
     private fun onLongPress() {
         kotlin.runCatching {
             curPage.selectText(startX, startY) { relativePage, lineIndex, charIndex ->
+                isTextSelected = true
+                firstRelativePage = relativePage
+                firstLineIndex = lineIndex
+                firstCharIndex = charIndex
                 val page = curPage.relativePage(relativePage)
                 with(page) {
-                    isTextSelected = true
-                    firstRelativePage = relativePage
-                    firstLineIndex = lineIndex
-                    firstCharIndex = charIndex
                     var lineStart = lineIndex
                     var lineEnd = lineIndex
                     var start: Int

+ 1 - 0
app/src/main/java/io/legado/app/ui/book/read/page/entities/TextLine.kt

@@ -12,6 +12,7 @@ data class TextLine(
     var lineBase: Float = 0f,
     var lineBottom: Float = 0f,
     val isTitle: Boolean = false,
+    var isLastLine: Boolean = false,
     var isReadAloud: Boolean = false,
     var isImage: Boolean = false
 ) {

+ 3 - 4
app/src/main/java/io/legado/app/ui/book/read/page/provider/ChapterProvider.kt

@@ -331,7 +331,6 @@ object ChapterProvider {
             val words =
                 text.substring(layout.getLineStart(lineIndex), layout.getLineEnd(lineIndex))
             val desiredWidth = layout.getLineWidth(lineIndex)
-            var isLastLine = false
             when {
                 lineIndex == 0 && layout.lineCount > 1 && !isTitle -> {
                     //第一行 非标题
@@ -347,8 +346,8 @@ object ChapterProvider {
                 }
                 lineIndex == layout.lineCount - 1 -> {
                     //最后一行
-                    textLine.text = "$words\n"
-                    isLastLine = true
+                    textLine.text = words
+                    textLine.isLastLine = true
                     //标题x轴居中
                     val startX =
                         if (isTitle && ReadBookConfig.titleMode == 1 || isTitleWithNoContent || isVolumeTitle)
@@ -378,7 +377,7 @@ object ChapterProvider {
                 }
             }
             stringBuilder.append(words)
-            if (isLastLine) stringBuilder.append("\n")
+            if (textLine.isLastLine) stringBuilder.append("\n")
             textPages.last().textLines.add(textLine)
             textLine.upTopBottom(durY, textPaint)
             durY += textPaint.textHeight * lineSpacingExtra