测量多行TextView的高度
Measuring Height of Multi-Line TextView
我创建了一个带有一堆子视图的自定义视图。此子视图可能会显示其部分或全部子视图,具体取决于可用的 space。不适合的次要元素应该被隐藏。其中一个子视图是多行 TextView
,可能适合也可能不适合。
为此,我需要计算 TextView
的高度。据了解,它应该在视图完全膨胀时完成,所以我将文本设置在 OnGlobalLayoutListener
中,然后尝试获取度量值。
这很好用,例如对于 ImageView
但 TextView
的高度似乎是相同的,无论它显示多少行文本。所以 textView.getHeight()
和 textView.getMeasuredHeight()
都不会得到多行 TextView
的实际高度。我怎样才能得到它?
如果我理解正确,你在 OnGlobalLayoutListener
回调中的 TextView
上调用了 setText
?
那个时候还没算身高
您应该:
1) 在回调之前立即设置文本。然后在回调中获取高度。
2) 在 OnGlobalLayoutListener
回调中调用 TextView 上的 post(Runnable)
。在runnable里面,可以获取到TextView的高度。
我创建了一个带有一堆子视图的自定义视图。此子视图可能会显示其部分或全部子视图,具体取决于可用的 space。不适合的次要元素应该被隐藏。其中一个子视图是多行 TextView
,可能适合也可能不适合。
为此,我需要计算 TextView
的高度。据了解,它应该在视图完全膨胀时完成,所以我将文本设置在 OnGlobalLayoutListener
中,然后尝试获取度量值。
这很好用,例如对于 ImageView
但 TextView
的高度似乎是相同的,无论它显示多少行文本。所以 textView.getHeight()
和 textView.getMeasuredHeight()
都不会得到多行 TextView
的实际高度。我怎样才能得到它?
如果我理解正确,你在 OnGlobalLayoutListener
回调中的 TextView
上调用了 setText
?
那个时候还没算身高
您应该:
1) 在回调之前立即设置文本。然后在回调中获取高度。
2) 在 OnGlobalLayoutListener
回调中调用 TextView 上的 post(Runnable)
。在runnable里面,可以获取到TextView的高度。