是否有一种方法可以根据用于绘制它的Paint使用drawText()方法返回在Android画布上绘制文本的宽度(以像素为单位) ?测量在画布上绘制的文字宽度(Android)
107
A
回答
183
22
Paint paint = new Paint();
Rect bounds = new Rect();
int text_height = 0;
int text_width = 0;
paint.setTypeface(Typeface.DEFAULT);// your preference here
paint.setTextSize(25);// have this the same as your text size
String text = "Some random text";
paint.getTextBounds(text, 0, text.length(), bounds);
text_height = bounds.height();
text_width = bounds.width();
0
我使用的方法measureText()和getTextPath()+ computeBounds(),并建立一个Excel与该可https://github.com/ArminJo/android-blue-display/blob/master/TextWidth.xlsx下找到固定大小的字体的所有文本属性。 还有其他文本属性,如登高等
的app以及一个用于在Excel中使用的原始值的功能drawFontTest()也可在此回购你也能找到简单的公式。
-1
你可以使用 “textPaint.getTextSize()” 获得文字宽度
1
嗯,我在不同的方式这样做:
String finalVal ="Hiren Patel";
Paint paint = new Paint();
paint.setTextSize(40);
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(finalVal, 0, finalVal.length(), result);
Log.i("Text dimensions", "Width: "+result.width()+"-Height: "+result.height());
希望这会帮助你。
4
补充答案
有由Paint.measureText
和Paint.getTextBounds
返回的宽度之间的微小差异。 measureText
返回一个宽度,其中包括填充字符串开头和结尾的字形的advanceX值。 getTextBounds
返回的Rect
宽度没有此填充,因为边界是Rect
,它严格包装文本。
+0
是的,这是更确切的。谢谢。 – chksr 2017-10-17 13:50:01
相关问题
- 1. Android在画布上绘制文字
- 2. 测量画布上的文字高度(Android)
- 3. 在缩放画布上测量文字
- 4. 安卓:在画布上测量文字高度
- 5. 画布在绘制后更改线宽
- 6. 在画布上绘制ArcTo
- 7. 绘制在画布上
- 8. 在画布上绘制
- 9. 在子画布上绘制
- 10. 在Scala.js上绘制画布
- 11. 在画布上绘制SVG
- 12. Android:在Scrollview的画布上绘画
- 13. 在Android画布或OpenGL上绘制位图速度更快
- 14. 在Android画布上绘制角度不正确
- 15. 在画布上垂直绘制文本
- 16. 在Silverlight中绘制一条线...画布宽度无效
- 17. 在Android上用不同长度的文本在画布上绘制曲线文字
- 18. 如何测量具有自动高度和宽度的画布
- 19. 从旧画布绘制 - Android
- 20. Android:绘制画布到ImageView
- 21. Android画布绘制矩形
- 22. 如何在HTML5画布上正确绘制多条不同宽度的线条?
- 23. 在清晰的画布上绘制更清晰的文字
- 24. HTML5画布绘制矩形 - 有差异宽度的边界?
- 25. 在画布上绘制的文字反锯齿效果不佳
- 26. 更改线宽绘制到画布(gwt)
- 27. 安排画布上绘制的绘图
- 28. 在控制台上绘制HTML5画布
- 29. 直接在画布上绘制位图vs在画布上
- 30. 画布绘制文字问题
感谢这是它!我不知道为什么我跳过它。 目的是简单地在屏幕中心画一个文本。 无论如何,我只是意识到我也可以在用于绘制文本的Paint上使用setTextAlign(Align.CENTER),它将指定的原点移动到绘制文本的中心。 谢谢。 – NioX5199 2010-07-15 16:17:44
非常好,谢谢,设置对齐油漆!谁会想到...? – 2011-08-05 02:22:58
或者您可以将文本视图的重力设置为中心 – yeradis 2011-10-21 14:38:14