使文本完全符合屏幕大小

时间:2011-05-17 17:22:40

标签: android text android-edittext screen-size

我有一个很长的文字,所以我决定把它分成页面,然后我把每个刷卡滚动到下一页..我这样做的方式是:

    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有不同的屏幕尺寸和形状,并且没有计算换行符,因此它可能会超出屏幕... 所以任何人都可以建议一种方法来了解填充屏幕需要多少个字符,以便我可以将其余的文本转换到另一个页面?感谢。

1 个答案:

答案 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。