带有包装文本的TextView的getMeasuredHeight()

nha*_*man 16 android android-layout

我试图TextView 绘制之前确定a的高度.我正在使用以下代码来执行此操作:

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());
Run Code Online (Sandbox Code Playgroud)

输出是MeasuredHeight: 28.没有错.

但是,当我给出TextView一个长文本字符串,所以发生包装时,它仍然给出一行而不是两行的高度:

(...)
textView.setText("TESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTEST");
(...)
Run Code Online (Sandbox Code Playgroud)

输出是MeasuredHeight: 28我所期望的MeasuredHeight: 56.

为什么它没有给我正确的价值,我怎样才能达到正确的价值?

Leo*_*dos 10

这是一个onCreate方法.您的整个视图层次结构尚未测量和布局.所以textView的父级不知道它的宽度.这就是为什么textView的维度不受其父级维度的限制.

尝试将您的行更改为:

int widthSpec = MeasureSpec.makeMeasureSpec(200, MeasureSpec.EXACTLY);
Run Code Online (Sandbox Code Playgroud)

所以它使你的textview宽度等于200像素.

如果你解释为什么你需要textview的高度,也许我们将能够帮助你.