Android String大小(以像素为单位)

时间:2014-04-17 15:14:32

标签: android string canvas

我试图在画布上绘制一个字符串。我需要在屏幕上水平居中字符串,并且字符串是动态的,因为它增加了更多的字符(最多7个字符)。如何以像素为单位获取String的长度,以便我可以进行一些计算使其居中?

3 个答案:

答案 0 :(得分:0)

对于文字,请使用 sp 而不是像素,并将文本视图放在其xml文件中。

机器人:比重="中心"

答案 1 :(得分:0)

我为此使用了StaticLayout。如果您将宽度设置为画布的大小并将对齐方式设置为居中,那么您不应该自己进行任何计算。

只要文本发生变化并在View的onSizedChanged函数中调用此函数:

StaticLayout sl;

private void initText(){

    TextPaint paint = new TextPaint();
    paint.setTextSize(16);
    paint.setColor(0xFFFFFFFF);

    sl = new StaticLayout("My String", paint, myCanvasWidth,   Layout.Alignment.ALIGN_CENTER, 1F, 0F, false);
}

然后在onDraw:

protected void onDraw(Canvas canvas)
{
   sl.draw(canvas);
}

如果您需要垂直放置文字,请使用以下内容:

int save = canvas.save();
canvas.translate(0, yOffset);
sl.draw(canvas);
canvas.restoreToCount(save);

如果你真的需要知道文字的宽度,那么:

sl.getWidth();

答案 2 :(得分:-1)

Android有方法

public float measureText (String text)

在API级别1中添加 返回文本的宽度 参数text要测量的文本。不能为空。
返回*文本的宽度

答案是:

float textPixelWidth = paintText.measureText(strText);