java - StaticLayout获取显示的字符数

标签 java android canvas

我写了一个图书阅读器。为了在我的页面上正确显示文本,我需要知道,可以显示多少个字符?

TextPaint mTextPaint=new TextPaint();
      mTextPaint.setTextSize(16);

      StaticLayout mTextLayout = new StaticLayout(newText, mTextPaint, canvas.getWidth() - 20, Alignment.ALIGN_NORMAL, 1.5f, 0.0f, false);
      canvas.save();


      int x = 10, y = 50;
          y += p.ascent() + p.descent();

          canvas.translate(x, y);

          mTextLayout.draw(canvas);
          canvas.restore();

最佳答案

首先,您需要获取最后一条可见线。您可以使用 Layout.getLineForVertical 方法获取它。 之后,您可以使用 Layout.getLineEnd/Layout.getLineVisibleEnd 方法获取行的文本偏移量

示例:

int line = mTextLayout.getLineForVertical(canvas.getHeight()); // position of last visible line
int chars = mTextLayout.getLineEnd(line);

关于java - StaticLayout获取显示的字符数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27783587/

相关文章:

android - 如何在Android工具栏上显示项目图标

android - Pjsip 安卓视频通话 : How to display your view in a SurfaceView using Pjsip Library

javascript - 为什么这 block Canvas 会不断增长? (动态调整 Canvas 大小)

javascript - 如何使物体沿对 Angular 线和之字形移动?

javascript - 如何使用 Javascript 在 Canvas 中单击某个位置?

java - 尝试将 if-else 语句转换为 switch 语句,但最终出现错误

java - 检查系统/计算机是否有可用的显示器或图形输出

java - 读取javaMail中所有未读消息/最近消息

android - 无法在 ImageView 中显示来自 Firebase 存储的图像

java - 如何从安装了 Apache tomcat 服务器的 Linux 服务器中删除 catalina.out