Tôi có văn bản dài và kích thước văn bản cố định. Làm cách nào để hiển thị trang văn bản theo trang? Người dùng sẽ tương tác với chương trình theo cách này: Anh vuốt sang trái hoặc phải để chuyển sang trang tiếp theo hoặc trang trước.Làm cách nào để trang văn bản dài?
Hiện tại, tôi tạo Trình quản lý trang để thực hiện công việc này. Nhưng nó rất hạn chế. Các mã lõi để xử lý văn bản là:
while (true) {
newLineIndex = TextUtils.indexOf(content, '\n', processIndex);
if (newLineIndex == -1) {// till the end of content
charCount = paint.breakText(content, processIndex, content.length(), false, leftLines * lineWidth, width);
} else {
charCount = paint.breakText(content, processIndex, ++newLineIndex, false, leftLines * lineWidth, width);
}
leftLines = (int) ((leftLines * lineWidth - width[0])/lineWidth);
processIndex += charCount;
if (leftLines < 1 || processIndex >= content.length()) {
page = new Page();
page.endIndex = processIndex;
page.startIndex = pageBaseLine;
page.content = content.subSequence(page.startIndex, page.endIndex);
result.add(page);
pageBaseLine = processIndex;
leftLines = lineNumber;
}
if (processIndex >= content.length()) {
break;
}
}
Hạn chế là trang có thể cắt ngắn văn bản như
|A lon|
|g wor|
|d man|
// một từ lâu người đàn ông
hoặc incorrec dòng do chế độ ngắt dòng :
// Trình quản lý trang tính toán (2 dòng):
|a sentence with loooooooo|
|ooong word abcdefghijklmn|
// Nhưng trên thực tế theo quan điểm của văn bản (3 lines):
|a sentence with |
|looooooooooong word |
|abcdefghijklmn |
Vì vậy, số lượng dòng cuối cùng là hơn tính toán. Vì vậy, quản lý trang của tôi là ngu ngốc. Có ai giúp tôi không? cảm ơn!
Vì nó là một thuật toán câu hỏi liên quan, có thể bạn nên xem xét đăng nó trong http://programmers.stackexchange.com/ –
Xem câu trả lời của tôi ở đây http://stackoverflow.com/questions/20204348/how-to-break-styled-text-into-pages -in-android – mixel