测量多行TextView的高度

Measuring Height of Multi-Line TextView

我创建了一个带有一堆子视图的自定义视图。此子视图可能会显示其部分或全部子视图,具体取决于可用的 space。不适合的次要元素应该被隐藏。其中一个子视图是多行 TextView,可能适合也可能不适合。

为此,我需要计算 TextView 的高度。据了解,它应该在视图完全膨胀时完成,所以我将文本设置在 OnGlobalLayoutListener 中,然后尝试获取度量值。

这很好用,例如对于 ImageViewTextView 的高度似乎是相同的,无论它显示多少行文本。所以 textView.getHeight()textView.getMeasuredHeight() 都不会得到多行 TextView 的实际高度。我怎样才能得到它?

如果我理解正确,你在 OnGlobalLayoutListener 回调中的 TextView 上调用了 setText

那个时候还没算身高

您应该:

1) 在回调之前立即设置文本。然后在回调中获取高度。

2) 在 OnGlobalLayoutListener 回调中调用 TextView 上的 post(Runnable)。在runnable里面,可以获取到TextView的高度。