我正在尝试获取文本字符串的宽度(以像素为单位)我得到的值为8,因为这意味着每个字母都是1像素。 我有以下代码
Rect bounds = new Rect();
Paint paint = new Paint();
paint.setTextSize(12);
paint.getTextBounds("ABCDEFGHI", 0, 1, bounds);
width=bounds.right; // this value is 8
bounds的值为0,0,8,9
答案 0 :(得分:5)
该方法采用以下参数:
getTextBounds(char[] text, int index, int count, Rect bounds)
并且您只请求一个字符(第三个参数)的宽度,而不是整个字符串:
paint.getTextBounds("ABCDEFGHI", 0, 1, bounds);
bounds.right
是8,这是字母A
的宽度。
您案件中的正确电话将是:
String str = "ABCDEFGHI";
paint.getTextBounds(str, 0, str.length(), bounds);
答案 1 :(得分:-1)
您可以尝试使用以下代码获取文字的宽度(以像素为单位)(从Android: measureText() Return Pixels Based on Scaled Pixels找到):
final float densityMultiplier = getContext().getResources().getDisplayMetrics().density;
final float scaledPx = 12 * densityMultiplier;
paint.setTextSize(scaledPx);
final float size = paint.measureText("ABCDEFGHI");
尺寸应该是您的宽度(以像素为单位)。