我想用textView做一个分页显示的阅读工具,目前的问题是我无法知道textview能够显示多少字符?
我想过一个办法是,计算textview的宽度,高度,然后算出可以显示的文字长度,然后根据字体大小去截取字符。但随分辨率,行高,换行,等因素的影响,任不能正确截取,希望大侠指导,如何用Textview显示文字并可实现翻页,或者说如何知道当前textview实际显示了多少字符。
可能用TextView做分页显示方向就是错误的。

解决方案 »

  1.   

    显示字符多少和字体大小有关系的,可以参考FBReaderJ,里边有相关代码
      

  2.   

    我觉得可以这样算,
    每行显示的字数=(view.width) / (字体的宽度)
    显示的字肯定是Paint绘制出来的,通过调用measureText函数来获取文本的宽度
      

  3.   

    我想了一方法,不知可行不,先试试,
    一行一行的填充字体。,问题是行数未知。
    int TvWeight = 100;
    int RowCount = 20;


    for(int i=0;i<RowCount;i++)
    {
    //第一步:根据字体得到一行可显示的字符
    int RowFontCount = TVWeight / FontSize;
    //第二步:根据 第一步得到的字符数截取小说文字
    String SbuStr = NovelText.substring(startNo,endNo);
    //第三步:判断截取得到的文字的像素长度,是否考虑文字间距的问题
    int GetSubstrLenght = 200;
    //根据第三步得到长度和行长度比较,
    //如果截取字符串中有换行符,则结束当前行的比较,因为按照 fontsize得到字符串一定不会超出行宽度的。
    //如果截取后的字符长度小于行长度则给截取字符串每次添加一个字符继续和行长度比较,直到字符和长度刚好显示合适为止。

    }
      

  4.   

    有点复杂了,首先textview有自动换行,就算你想自己去手动优化,也不用这么细致,简单的优化就可以了,比如去优化一下,如果有英文单词,可以去加个空格之类的,区分中英文显示。
      

  5.   

    先求出总字数,textView.contentSize.height
    然后可以求出总页数=textView.contentSize.height/textView的高度
    设置初页数currentPage = 1;
    往上,往下翻currentPage +1,-1;