pull/1794/head
kunfei 3 years ago
parent 3a806b5b3b
commit f7d6584e48
  1. 5
      app/src/main/java/io/legado/app/ui/book/read/page/ContentTextView.kt
  2. 8
      app/src/main/java/io/legado/app/ui/book/read/page/ReadView.kt
  3. 1
      app/src/main/java/io/legado/app/ui/book/read/page/entities/TextLine.kt
  4. 7
      app/src/main/java/io/legado/app/ui/book/read/page/provider/ChapterProvider.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")
}

@ -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

@ -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
) {

@ -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

Loading…
Cancel
Save