如何获得Android的string宽度?

如果可能的话,我想尽可能地获得身高。

您可以使用Paint对象的getTextBounds(String text, int start, int end, Rect bounds)方法。 您可以使用TextView提供的绘画对象,也可以使用所需的文本外观自行构build绘画对象。

使用Textview你可以做到以下几点:

 Rect bounds = new Rect(); Paint textPaint = textView.getPaint(); textPaint.getTextBounds(text, 0, text.length(), bounds); int height = bounds.height(); int width = bounds.width(); 

如果你只需要你可以使用的宽度:

 float width = paint.measureText(string); 

http://developer.android.com/reference/android/graphics/Paint.html#measureText(java.lang.String);

文本有两种不同的宽度度量。 一个是在宽度上绘制的像素的数量,另一个是在绘制文本之后光标应当提前的“像素”的数量。

paint.measureTextpaint.getTextWidths返回在绘制给定string之后光标应该被提前的像素数目(以浮点数表示)。 对于绘制像素的数量使用paint.getTextBounds在其他答案中提到。 我相信这被称为字体的“提前”。

对于一些字体来说,这两个测量值有很大的不同,例如黑体字体的字体的字母超出了其他字母(重叠),参见大写字母“L”。 使用其他答案中提到的paint.getTextBounds来绘制像素。

我用这种方法测量了宽度:

 String str ="Hiren Patel"; Paint paint = new Paint(); paint.setTextSize(20); Typeface typeface = Typeface.createFromAsset(getAssets(), "Helvetica.ttf"); paint.setTypeface(typeface); paint.setColor(Color.BLACK); paint.setStyle(Paint.Style.FILL); Rect result = new Rect(); paint.getTextBounds(str, 0, str.length(), result); Log.i("Text dimensions", "Width: "+result.width()); 

这会帮助你。