我有一个很长的文字,所以我决定把它分成页面,然后我把每个刷卡滚动到下一页..我这样做的方式是:
NumberOfPages=text.length()/CharPerPage; //CharPerPage=500;
NumberOfPages++;
Chapters.add(text.indexOf(" ", CurrentPage*CharPerPage));
CurrentPage++;
int tmp=0;
for(int i =NumberOfPages;i>0;i--)
{
tmp =(CurrentPage*CharPerPage);
if(tmp>text.length())
{
Chapters.add(text.length());
break;
}
else
{
Chapters.add(text.indexOf(" ", tmp));
CurrentPage++;
}
}
所以我将文本划分为页面,每个页面有500个字符......但这并不好,因为Android有不同的屏幕尺寸和形状,并且没有计算换行符,因此它可能会超出屏幕... 所以任何人都可以建议一种方法来了解填充屏幕需要多少个字符,以便我可以将其余的文本转换到另一个页面?感谢。
答案 0 :(得分:1)
好的,这是一个镜头 - 而且相当笨拙,但简而言之:
*您需要知道任何给定的文本行是否适合您的视图中的宽度 *你需要知道你有多少行 *您需要处理嵌入式换行符
所以
某些文字适合任何给定的行
private boolean isTooLarge (TextView text, String newText) {
float textWidth = text.getPaint().measureText(newText);
return (textWidth >= text.getMeasuredWidth ());
}
您的textview有多少行:
numLinesPerPage=mTextView.getHeight()/mTextView.getLineHeight(); //not this doesn't handle special cases where you've changed the font, bolded it etc
使用这两个工具,您可以遍历文本,添加单词,跟踪您还有多少行(如果文本中包含新行,则处理新行)
注意:getHeight无法在构造函数中调用,因为它还不知道高度 - 如果你有自定义控件,你也可以在onDraw中执行此操作,或者也可以onMeasure。