【问题标题】:Draw text in a Canvas and multiple lines在 Canvas 和多行中绘制文本
【发布时间】:2015-11-15 05:59:07
【问题描述】:
我是 Canvas 和 Paint 的初学者。我想在 Canvas 中绘制文本,但它可能比原始位图更长。这样文本就从位图出来了。
是否有某种自动管理器可以在到达终点时创建一个新行?还是我应该玩高度和距离?谢谢
【问题讨论】:
-
如果您不介意使用 Swing,JTextArea 将为您管理多行文本显示。 Canvas 是一个 AWT 重量级对象,与轻量级控件混合起来可能有点棘手。 JTextArea 是轻量级的,它可能会给您带来更少的问题。
标签:
java
android
paint
android-canvas
【解决方案2】:
最好的方法是用StaticLayout绘制文本:
// init StaticLayout for text
StaticLayout textLayout = new StaticLayout(
gText, paint, textWidth, Layout.Alignment.ALIGN_CENTER, 1.0f, 0.0f, false);
// get height of multiline text
int textHeight = textLayout.getHeight();
// get position of text's top left corner
float x = (bitmap.getWidth() - textWidth)/2;
float y = (bitmap.getHeight() - textHeight)/2;
// draw text to the Canvas center
canvas.save();
canvas.translate(x, y);
textLayout.draw(canvas);
canvas.restore();
请参阅my blogpost 了解更多详情。