为什么两个出局都打印84?第一个应该是 84,第二个应该是 220。如果我第二次点击,两个输出都是 220。
public void btnClick(View v) {
System.out.println(textView1.getWidth());
textView1.setTextSize(TypedValue.COMPLEX_UNIT_PX, 55);
System.out.println(textView1.getWidth());
}
如果已经测量过,更改文本大小不会改变视图的大小。SetTextSize() 将触发一个 invalidate(),但这只会在未来触发一个 onDraw()。视图将不再被测量,其宽度和高度将保持不变。您可以在视图上调用 requestLayout() 以重新计算宽度和高度。
如果您只想在更改大小后查看文本的大小(就其尺寸而言),您可以尝试http://developer.android.com/reference/android/graphics/Paint.html#getTextBounds(char[] , 整数, 整数, android.graphics.Rect)
调用后TextView
大小不会立即更新。setTextSize()
它只是使视图无效,稍后将更新。计算 View 的大小很昂贵,因为它取决于整个布局,因此不会立即完成。
稍后尝试获取宽度,您将获得正确的值。
我认为第二个 getWidth() 在 setTextSize 完成之前正在运行。因此得到相同的结果。Java 在运行下一行之前不会等待每一行代码完成。
如果 setTextSize 行需要 5 毫秒才能完成,并且下一行在 setTextLine 运行后 2 毫秒运行,那么结果将是相同的。您可以将它们分成不同的方法。或添加等待。
此代码仅用于调试吗?