Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java getWidth未更新_Java_Android - Fatal编程技术网

Java getWidth未更新

Java 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

为什么两个输出都打印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());
}

我认为第二个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()