使文本适合位图宽度

时间:2012-02-04 11:43:58

标签: android text android-canvas

我需要绘制文本,水平填充给定的Rect()(只应拉伸空格)。有没有办法,除了计算每个字宽?

2 个答案:

答案 0 :(得分:1)

是的,没问题。在onDraw(Canvas c)函数中,使用以下代码:

public void onDraw(Canvas canvas) {
  TextPaint mTextpaint = new TextPaint();
  mTextPaint.setAntiAlias(true);
  mTextPaint.setTextSize(14);
  mTextpaint.setColor(Color.MAGENTA);

  final String mText = "Hello World";
  final int maxTextWidth = 40;

  DynamicLayout dl = new DynamicLayout(mText, mTextPaint, 
      maxTextWidth, Layout.Alignment.ALIGN_CENTER, 1.0f, 1.0f, false);

  canvas.translate(0, 100);
  dl.draw(canvas);
}

此示例创建一个TextLayout(DynamicLayout),它给出了最大宽度,配置的TextPaint和文本。它在canvas对象上绘制了一个居中的文本“Hello World”,有关TextLayouts的更多文档,您可以使用Android开发文档;) 我的评论:示例代码没有优化,你可以在其他所有函数中设置Textpaint,事件是Text和maxTextWidth - 因为有时大量使用onDraw()事件这样做更好的把代码放在另一个不是经常使用像类构造函数那样的函数。

答案 1 :(得分:0)

只需在onDraw()函数中尝试StaticLayout(对于静态文本)或DynamicLayout(dynimc文本),这是文本布局,您可以给出最大宽度。您甚至可以使用TextUtils.EllipSize来剪切文本。