This commit is contained in:
kunfei
2022-04-15 19:33:36 +08:00
parent 3a806b5b3b
commit f7d6584e48
4 changed files with 11 additions and 10 deletions

View File

@@ -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")
}

View File

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

View File

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

View File

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