2012-02-04 102 views
2

我需要绘制文本,水平填充给定的Rect()(只是空间应该被拉伸)。除了计算每个字的宽度外,还有什么方法吗?适合文本到位图宽度

回答

0

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

+0

我试过了。例如,你可以给几条代码行吗? – styanton 2012-02-04 15:49:43

1

是的,没问题。在你的onDraw(帆布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和文本。它在画布对象上绘制了一个中心文本“Hello World”,关于TextLayouts的更多文档,您可以使用Android开发文档;) 我的评论:示例代码未经优化,您可以在任何其他函数中设置Textpaint,事件Text和maxTextWidth - 因为有时会使用onDraw()事件,所以将代码放入另一个不常用的函数(如类构造函数等)中会更好一些。

+0

谢谢例如,但它不完全是我所需要的。我希望获得相同的效果,如CSS中的“text-align:justify”。 – styanton 2012-02-04 18:39:52