相关疑难解决方法(0)

HTML书籍式的分页

如何在屏幕大小的块中拆分HTML文件的内容,以便在WebKit浏览器中"分页"它?

每个"页面"应显示完整的文本量.这意味着不得在屏幕的顶部或底部边框中将一行文本切成两半.

编辑

这个问题最初标记为"Android",因为我打算构建一个Android ePub阅读器.但是,似乎解决方案只能使用JavaScript和CSS实现,因此我扩大了问题的范围,使其与平台无关.

html javascript css pagination webkit

59
推荐指数
5
解决办法
2万
查看次数

有没有办法检索TextView的可见行数或范围?

我有一个全屏TextView持有一个需要滚动的长跨度.TextView的getLineCount()为我提供了整个文本块使用的总行数,但我想知道屏幕上当前可以看到多少行文本.

或者,更好的是,有没有办法找出屏幕上当前可见的线条范围?例如,当视图滚动时,我可以告诉20-60行当前是否可见?

android

22
推荐指数
2
解决办法
1万
查看次数

如何在Android中以固定宽度和高度将文本放入StaticLayout中?

我正在尝试使用绘制文本Canvas并发现使用StaticLayout会自动处理换行符。我还想限制它的高度,以便当文本太长时它会被椭圆化,但文本容器的大小是动态的。我可以轻松地将宽度应用于StaticLayout,但无法找到设置高度的方法。

我尝试使用TextUtils.ellipsize(),但在获取行之间的间距时遇到问题。

android staticlayout

8
推荐指数
1
解决办法
841
查看次数

在Android应用程序中管理文本,例如在电子书中

我正在开发一个application看起来像电子书阅读器,但它不是一个电子书阅读器.我有一个巨大的文本,分为不同的章节.现在我想把这个文本呈现为一本书,用户应该感觉阅读一本电子书,它将具有各种功能,如GoTo搜索,目录和最重要的页面之间的页面卷曲过渡.

现在的问题是如何将整个内容划分为多个页面.我怎么知道,适合屏幕的字符数(取决于屏幕大小和字体大小).我完全不知道从哪里开始以及如何继续.

最终,我计划开发一个电子书阅读器,它只能阅读一本书,这是我给出的文字.

请让我知道实现这一点,在哪里放置分页符以及放置文本的位置(在数据库或资源文件中).

java android

7
推荐指数
1
解决办法
1988
查看次数

Android TextView中的分页

我在文件[~100 KB]中有一些文本需要在一个文件中显示给用户TextView.我想将文本拆分成页面.

这是我想要实现分页的想法:

  • 确定屏幕宽度和屏幕高度320 x 480.
  • 计算75%的高度,[360 px]以容纳按钮等.
  • 确定字体大小
  • 计算N可以显示的字符数[ ].
  • 从文件中读取并仅显示N字符数.

这似乎可行,但看起来很粗糙,容易出错.有没有人有更好的想法?

pagination android text screen textview

6
推荐指数
1
解决办法
2773
查看次数

如何在Android中使用Canvas.drawText绘制跨区字符串

我想画SpannedString一个Canvas.

在此输入图像描述

SpannableString spannableString = new SpannableString("Hello World!");
ForegroundColorSpan foregroundSpan = new ForegroundColorSpan(Color.RED);
BackgroundColorSpan backgroundSpan = new BackgroundColorSpan(Color.YELLOW);
spannableString.setSpan(foregroundSpan, 1, 8, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
spannableString.setSpan(backgroundSpan, 3, spannableString.length() - 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(spannableString);
Run Code Online (Sandbox Code Playgroud)

上面的例子是使用a绘制的TextView,而a又使用a Layout来绘制带有跨度的文本.我知道使用a Layout向画布绘制文本的推荐方法.但是,我从头开始制作自己的文本布局,所以我需要自己实现.

做这样的事情是行不通的

canvas.drawText(spannableString, 0, spannableString.length(), 0, 0, mTextPaint);
Run Code Online (Sandbox Code Playgroud)

因为drawText只从中获取文本spannableString,而不是任何跨度.绘图颜色分别处理TextPaint.

如何使用canvas.drawText(或drawTextRun)绘制跨度信息(特别是前景和背景颜色)?

有关

计划解决方案

我打算直接做一个自我回答,但事实证明这比我想象的更难.所以我会先发帖,然后在我弄清楚的时候添加一个答案.(我当然欢迎任何人先回答.)

这是我到目前为止的作品:

android canvas paint drawtext spannable

6
推荐指数
1
解决办法
3057
查看次数

如何检查 TextView 的文本是否超过最大行数

有没有办法检查 TextView 的文本是否超过了最大行数?我找到了,TextView.getLineCount()但这只能告诉我是否使用了最大行数,而不能告诉我是否超过了最大行数。

编辑:
到目前为止,我有:

text_view.post(new Runnable() {
            @Override
            public void run() {
                if (text_view.getLineCount() < text_view.getMaxLines()) {
                    // do stuff
                }
            }
});
Run Code Online (Sandbox Code Playgroud)

但这不会检测它是否超过了最大行数,即如果它使用大于或等于最大行数,则 if 语句将通过。这是因为如果它使用超过最大行数,那么 getLineCount 只会返回最大行数,不会更多。

请注意,文本视图的文本在我的代码中以编程方式设置得更高,而不是在 XML 中硬编码。

android textview

6
推荐指数
1
解决办法
1913
查看次数

如何在Android中将样式文本分解为页面?

我有一个很长的文本,我想打破多个页面.我还需要一种方式来设置这个文本的样式.

android text page-break styledtext spannablestring

4
推荐指数
1
解决办法
4905
查看次数