Java getWidth未更新
为什么两个输出都打印84?第一个应为84,第二个应为220。如果我第二次单击,两个输出的读数都是220Java getWidth未更新,java,android,Java,Android,为什么两个输出都打印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()); } 我认为第二个getWidt
public void btnClick(View v) {
System.out.println(textView1.getWidth());
textView1.setTextSize(TypedValue.COMPLEX_UNIT_PX, 55);
System.out.println(textView1.getWidth());
}
我认为第二个getWidth()是在setTextSize完成之前运行的。因此得到了相同的结果。Java不会等到每一行代码完成后才运行下一行代码 如果setExtSize行需要5毫秒才能完成,而下一行在setExtLine运行2毫秒后运行,则结果将是相同的。您可以将这些方法分为不同的方法。或者添加等待
这段代码只是为了调试吗?我认为第二个getWidth()是在setTextSize完成之前运行的。因此得到了相同的结果。Java不会等到每一行代码完成后才运行下一行代码 如果setExtSize行需要5毫秒才能完成,而下一行在setExtLine运行2毫秒后运行,则结果将是相同的。您可以将这些方法分为不同的方法。或者添加等待
此代码仅用于调试吗?调用
setTextSize()
后,不会立即更新TextView
大小。它只是使视图无效,并将在以后更新。计算视图的大小非常昂贵,因为它取决于整个布局,所以不能立即完成
稍后尝试获取宽度,您将获得正确的值。调用
setTextSize()
后,不会立即更新TextView
大小。它只是使视图无效,并将在以后更新。计算视图的大小非常昂贵,因为它取决于整个布局,所以不能立即完成
稍后尝试获取宽度,您将获得正确的值。如果已经测量过,则更改文本大小不会更改视图的大小。SetTextSize()将触发invalidate(),但这在将来只会触发onDraw()。视图将不再测量,其宽度和高度将保持不变。可以在视图上调用requestLayout()以重新计算宽度和高度
如果您只想在更改大小(就其尺寸而言)后查看文本的大小,可以尝试更改文本大小(如果已经测量过),则不会更改视图的大小。SetTextSize()将触发invalidate(),但这在将来只会触发onDraw()。视图将不再测量,其宽度和高度将保持不变。可以在视图上调用requestLayout()以重新计算宽度和高度
如果您只想在更改大小(根据其尺寸)后查看文本的大小,您可以尝试除非随后调用了onMeasure(),否则稍后检查将没有帮助。否则,视图的宽度和高度将保持不变。此外,如果视图的布局宽度和布局高度设置为固定值,而不是换行内容,则更改文本大小不会更改视图的大小。你是对的,但我认为他将其设置为“换行内容”,他只是想知道为什么他没有立即获得新的宽度。除非onMeasure(),否则稍后再检查不会有帮助后来被叫来。否则,视图的宽度和高度将保持不变。此外,如果视图的布局宽度和布局高度设置为固定值,而不是换行内容,则更改文本大小不会更改视图的大小。你是对的,但我认为他将其设置为“换行内容”他只是想知道为什么他没有立即获得新的宽度。我正在尝试获得最大文本大小,它仍然允许文本视图适应特定区域。我需要这个值来设置seekbar上的最大值。我想做一个循环。当textview.getWidth()