我正在尝试确定 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
。
为什么它没有给我正确的值(value),我怎样才能获得正确的值(value)?
最佳答案
这是一个 onCreate 方法。您的整个 View 层次结构尚未测量和布局。所以 textView 的父级不知道它的宽度。这就是为什么 textView 的尺寸不受其父尺寸的限制。
尝试将您的线路更改为:
int widthSpec = MeasureSpec.makeMeasureSpec(200, MeasureSpec.EXACTLY);
因此它使您的 textview 宽度等于 200 像素。
如果您解释为什么需要 textview 的高度,也许我们可以帮助您。
关于android - 带有包装文本的 TextView 的 getMeasuredHeight(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14386584/