我正在尝试确定一个 TextView
在被绘制之前的高度。我使用以下代码来实现:
TextView textView = (TextView) findViewById(R.id.textview);
textView.setText("TEST");
int widthSpec = MeasureSpec.makeMeasureSpec(LayoutParams.MATCH_PARENT, MeasureSpec.EXACTLY);
int heightSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
textView.measure(widthSpec, heightSpec);
System.out.println("MeasuredHeight: " + textView.getMeasuredHeight());
输出为MeasuredHeight: 28
,没有问题。
然而,当我给TextView
一个很长的文本字符串,以至于需要换行时,它仍然给出单行的高度而不是两行:
(...)
textView.setText("TESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTEST");
(...)
输出为MeasuredHeight: 28
,而我期望的是MeasuredHeight: 56
。
为什么它没有给我正确的值,我该如何获得正确的值?
onCreate()
方法中。 - nhaarmanpost
在您的视图之一上发布一个Runnable
(在onCreate
方法中),并将您当前的代码放在其中。 - usermeasure(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)
吗? - sherpya