Java StaticLayout获取显示的字符数

Java StaticLayout获取显示的字符数,java,android,canvas,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);

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

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);

非常感谢。你帮了我很多!