2

我想要做的是将长文本分成页面,这样当用户点击下一个/上一个按钮时,我可以在一个文本视图中一个一个地显示它们。我需要知道最后显示的字符索引,但这不是那么简单....

我试过这个:

int start = textView.getLayout().getLineStart(0);
int end = textView.getLayout().getLineEnd(textView.getLineCount() - 1);

String displayed = textView.getText().toString().substring(start, end);

链接

但是 getLayout 返回 null

同样使用 getWidth/getHeight 也没用,因为它们在“onCreate”函数中返回 0...

谢谢你的帮助 !

4

2 回答 2

3

从另一个方向解决问题可能更有意义:您有很长String的文本。然后你决定你可以在一个页面上放多少,并将它分解String成一个由多个子字符串组成的数组,每个子字符串一个。然后您可以简单地将页面索引存储在某个地方,并将其用作数组的索引String然后,您可以简单地将页面索引存储在某个地方,并将其用作您在将整个文本分解为子字符串时创建

这假设有一种算法可以找到您可以在页面中容纳多少文本。看看这个问题

于 2012-11-05T16:10:38.350 回答
2

我想出了一种非常有效的方法来显示跨页数的长字符串。-我将长文本显示到文本视图中并禁用滚动-然后找出布局中的行和单个屏幕上的行,因此我知道长字符串将跨越多少个屏幕(页面)-然后每当用户单击按钮转到下一页或滑动屏幕转到下一页然后我使用 TexView.scrollTo() 函数向前移动到行数(屏幕上的行数)。所以它变得和移动到下一页一样好

于 2014-01-03T22:27:23.210 回答