我正在为Android构建电子书阅读器。电子书的内容通常分为html文件(epub),其中包含一个或几个章节。
我打算建立一个电子书阅读器,将这些文件的内容分成不同的“页面”。问题是要知道一页上有多少文本“适合”并计算正确的页面数量,因为这取决于许多不同的因素,例如:字体大小,字号,段落,图像,分页符,标题等。
Idealy我会让我的文本合理且可选择,因为普通的TextView或EditText是不可能的,我必须使用不可滚动的WebView。
总而言之,我如何“测量”适合我WebView上一个“页面”的文本数量?或者是否有更好的方法来解决这个问题?我看到Paint类支持测量文本和breakText。
谢谢!
答案 0 :(得分:7)
注意:此答案不会将webview用作显示表面。
您可以使用Canvas绘制每个页面。画布为您提供高度和高度。宽度使用drawText根据宽度和宽度绘制画布上的每一行的宽度高度可用。
基本上你可以计算出一行中可以容纳多少个字母,取出那么多单词,注意不要拆分任何单词并继续绘制文本。
如果你分解了每个段落使用不同工人的任务,你也可以快速完成。
答案 1 :(得分:3)
也许你可以这样做
正在WebView
在WebView中,您可以使用Javascript检查DOM树的当前状态并提取各个元素的宽度和高度等测量值
Javascript通过回调将页面大小传回WebView创建者
当Javascript检测到超出页面大小阈值时,会发送需要分页的信号
Android HTML5 Kindle使用Javascript打破页面,所以它绝对可能。
答案 2 :(得分:1)