Android测量textview

时间:2017-10-27 23:53:18

标签: android textview

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

这是一个简单的textView:

<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

=&GT; 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

对于这个,这个更有意义。但是身高呢。

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

点击按钮进行测量;所以没有创造状态问题。

(最终目标是自动调整我的文本;我找到了一些库,但它们只在其中自动调整)

1 个答案:

答案 0 :(得分:1)

您将获得以像素为单位的值,但是您将其设置为密度像素。如果您将返回的值转换为DP,您将得到一个非常接近的数字。在我的情况下,我得到了232.38095作为回报。