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

标签 android android-layout

我正在尝试确定 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/

相关文章:

android如何获取手机照片库?

android - 如何在我的 View 中更改 layout_weight(以编程方式)

android - 如何创建一个对角线分割的布局,并且两半都是可点击的?

java - 与仅创建布局相比,创建自定义 ActionBar 有何优势?

android - 与 Butterknife 绑定(bind)以在 android 中动态添加 View

android - 使用自定义 View "SignatureView"捕获用户签名

java - "this"上下文是什么意思?

android - Droid 上的屏幕键盘问题

android-layout - 如何创建 Android Google Play 的 GridView ,如动态加载不同尺寸图像的小部件

android - 如何在两个布局之间创建android删除过渡