安卓测量文本视图



我知道这个问题已经被问了很多。但他的回答对我不起作用。

这是一个简单的文本视图:

<TextView
    android:id="@+id/cardText"
    android:layout_width="240dp"
    android:layout_height="wrap_content"
    android:layout_marginEnd="30dp"
    android:layout_marginStart="30dp"
    android:layout_marginTop="60dp"
    android:background="@color/transparent"
    android:padding="0dp"
    android:paddingBottom="0dp"
    android:paddingEnd="0dp"
    android:paddingStart="0dp"
    android:paddingTop="0dp"
    android:text="hello world"
    android:textSize="36sp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

在我的主要活动中,我是这样理解的:final TextView cardNumber = (TextView) findViewById( R.id.cardNumber );

和我试图测量。

int ww = cardText.getMeasuredWidth();
int hh = cardText.getMeasuredHeight();
Log.v("ww", String.valueOf(ww) ); // => 630
Log.v("hh", String.valueOf(hh) ); // => 127

=> WTF

我也可以尝试对测量进行一些约束:

cardText.measure(View.MeasureSpec.makeMeasureSpec( 240, View.MeasureSpec.EXACTLY), 0);
int ww = cardText.getMeasuredWidth();
int hh = cardText.getMeasuredHeight();
Log.v("ww", String.valueOf(ww) ); // => 240
Log.v("hh", String.valueOf(hh) ); // => 238

这个对 with 来说更有意义。但是高度呢。

我尝试了很多奇怪的组合,但我无法获得文本视图的高度。

该度量是在单击按钮时进行的;因此不存在创建状态问题。

(最终目标是自动适应我的文本;我找到了一些库,但它们只自动适应)

您以像素为单位获取值,但您以密度像素为单位进行设置。如果将返回的值转换为DP,您将获得一个非常接近的数字。就我而言,我得到了 232.38095 作为回报。

最新更新