Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android字符串大小(像素)_Android_String_Canvas - Fatal编程技术网

Android字符串大小(像素)

Android字符串大小(像素),android,string,canvas,Android,String,Canvas,我想在画布上画一条线。我需要让字符串在屏幕上水平居中,当您添加更多字符(最多7个字符)时,字符串会随着其增长而动态变化。如何获得字符串的长度(以像素为单位),以便我可以进行一些计算以使其居中?对于文本,请使用sp而不是像素,并从其xml文件将textview居中 android:gravity=“center”我会使用静态布局。如果将宽度设置为画布的大小,并将对齐设置为中心,则不需要自己进行任何计算 每当文本更改时调用此函数,并在视图的onSizedChanged函数中: StaticLayou

我想在画布上画一条线。我需要让字符串在屏幕上水平居中,当您添加更多字符(最多7个字符)时,字符串会随着其增长而动态变化。如何获得字符串的长度(以像素为单位),以便我可以进行一些计算以使其居中?

对于文本,请使用sp而不是像素,并从其xml文件将textview居中


android:gravity=“center”

我会使用静态布局。如果将宽度设置为画布的大小,并将对齐设置为中心,则不需要自己进行任何计算

每当文本更改时调用此函数,并在视图的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);
}
然后在昂德劳:

protected void onDraw(Canvas canvas)
{
   sl.draw(canvas);
}
如果需要垂直放置文本,请使用以下方法:

int save = canvas.save();
canvas.translate(0, yOffset);
sl.draw(canvas);
canvas.restoreToCount(save);
如果你真的需要知道文本的宽度,那么:

sl.getWidth();
安卓有这个方法

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

所以答案是:

float textPixelWidth = paintText.measureText(strText);