StaticLayout 获取显示的字符数
StaticLayout get number of displayed characters
我写了一个读书阅读器。为了在我的页面上正确显示文本,我需要知道可以显示多少个字符?
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);
我写了一个读书阅读器。为了在我的页面上正确显示文本,我需要知道可以显示多少个字符?
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);