TextView - 获取可见文本,以及如何将字符串分割为页面?

时间:2012-11-05 15:54:09

标签: android textview

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

我试过这个:

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

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

frrom LINK

但是getLayout返回null

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

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

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

这假设有一种算法可以找到您可以在页面中放入多少文本。看看this question

答案 1 :(得分:2)

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