我的应用程序能够准确测量字符串是至关重要的;我一直在用Paint.measureText()
来做这件事。不幸的是,在4.4中,此方法已更改为不再返回精确值,而是返回一个向上舍入的值。是否有人知道我可以使用另一种方法来精确测量文本,或者有任何其他建议吗?
Android来源:
Android 17
return w*mInvCompatScaling;
Android 18
return (float) Math.ceil(w*mInvCompatScaling);
答案 0 :(得分:0)
看起来回归反射是恢复旧功能的唯一方法。查找私有本机方法如下并调用它。
Paint paint = new Paint();
// configure paint here
Method m = paint.getClass().getDeclaredMethod("native_measureText",
String.class, int.class);
float size = m.invoke(paint, text, 0x2);
// text - text to measure
// 0x2 - default for Right-To-Left text
虽然它看起来不干净,但这一定对您有用。
答案 1 :(得分:0)
您必须设置:
m.setAccessible(true);
在调用它之前不要获取IllegalAccessException
。