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