当前位置: 代码迷 >> Android >> Textview展示文字并可实现翻页,或得到当前textview实际显示了多少字符
  详细解决方案

Textview展示文字并可实现翻页,或得到当前textview实际显示了多少字符

热度:26   发布时间:2016-05-01 12:34:28.0
Textview显示文字并可实现翻页,或得到当前textview实际显示了多少字符
   我想用textView做一个分页显示的阅读工具,目前的问题是我无法知道textview能够显示多少字符?
我想过一个办法是,计算textview的宽度,高度,然后算出可以显示的文字长度,然后根据字体大小去截取字符。但随分辨率,行高,换行,等因素的影响,任不能正确截取,

希望大侠指导,如何用Textview显示文字并可实现翻页,或者说如何知道当前textview实际显示了多少字符。
可能用TextView做分页显示方向就是错误的。
------解决方案--------------------
显示字符多少和字体大小有关系的,可以参考FBReaderJ,里边有相关代码
------解决方案--------------------
顶顶顶顶顶顶顶顶
------解决方案--------------------
我觉得可以这样算,
每行显示的字数=(view.width) / (字体的宽度)
显示的字肯定是Paint绘制出来的,通过调用measureText函数来获取文本的宽度
------解决方案--------------------
我想了一方法,不知可行不,先试试,
一行一行的填充字体。,问题是行数未知。
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得到字符串一定不会超出行宽度的。
//如果截取后的字符长度小于行长度则给截取字符串每次添加一个字符继续和行长度比较,直到字符和长度刚好显示合适为止。

}
------解决方案--------------------
有点复杂了,首先textview有自动换行,就算你想自己去手动优化,也不用这么细致,简单的优化就可以了,比如去优化一下,如果有英文单词,可以去加个空格之类的,区分中英文显示。
------解决方案--------------------
顶顶顶顶顶顶顶顶顶顶
------解决方案--------------------
引用:
显示字符多少和字体大小有关系的,可以参考FBReaderJ,里边有相关代码


这位大哥,你能告诉我具体位置吗,我下了源码,找不到啊,太多了。或者你帮我找找,贴出来,万分感谢
------解决方案--------------------
我觉的还是从文件里读出来显示的时候,记住读文件的位置,翻页后才从当前位置向后或向前读一页的内容。
每页能显示多少文本需要先计算出来。还要考虑一段的换行,空行,段首的空格等。
------解决方案--------------------

它这个太复杂了.....

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


这位大哥,你能告诉我具体位置吗,我下了源码,找不到啊,太多了。或者你帮我找找,贴出来,万分感谢

------解决方案--------------------
如今我也遇到这个问题了,楼主解决了吗?在读取英文你的时候英文字母所占的宽度都不同,怎么判断长度呢?
------解决方案--------------------
有源码没?急!!!
------解决方案--------------------
大家共享一下解决方案啊!!太痛苦了!
------解决方案--------------------
先求出总字数,textView.contentSize.height
然后可以求出总页数=textView.contentSize.height/textView的高度
设置初页数currentPage = 1;
往上,往下翻currentPage +1,-1;
  相关解决方案