Mam długi tekst i stały rozmiar textView. Jak wyświetlić stronę tekstową? Użytkownicy będą interaktywni z programem w ten sposób: Przesuwa palcem w lewo lub w prawo, aby przejść do następnej lub poprzedniej strony.Jak wstawić długi tekst?
Obecnie tworzę stronę PageManager, aby wykonać to zadanie. Ale jest bardzo ograniczony. Kod podstawowy do przetwarzania tekstu jest:
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;
}
}
Ograniczeniem jest tu strona może obciąć tekst jak
|A lon|
|g wor|
|d man|
// długim słowem człowieka
lub incorrec linii powodu opakowania słowo :
// Strona Menedżer oblicza ten (2 linie):
|a sentence with loooooooo|
|ooong word abcdefghijklmn|
// Ale faktycznie w widoku tekstowym (3 linie):
|a sentence with |
|looooooooooong word |
|abcdefghijklmn |
więc ostateczna liczba linii jest więcej niż obliczenia. Więc mój kierownik strony jest głupi. Czy ktoś mi pomoże? dzięki!
Ponieważ jest to algorytm powiązane pytanie, może powinieneś rozważyć opublikowanie go w http://programmers.stackexchange.com/ –
Zobacz moją odpowiedź tutaj http://stackoverflow.com/questions/20204348/how-to-break-styled-text-into-pages -in-android – mixel