我知道这个问题已被问到很多。但他的回答对我不起作用。
这是一个简单的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
对于这个,这个更有意义。但是身高呢。
我尝试了许多奇怪的组合,但我无法设法获得文本视图的高度。
点击按钮进行测量;所以没有创造状态问题。
(最终目标是自动调整我的文本;我找到了一些库,但它们只在其中自动调整)
答案 0 :(得分:1)
您将获得以像素为单位的值,但是您将其设置为密度像素。如果您将返回的值转换为DP,您将得到一个非常接近的数字。在我的情况下,我得到了232.38095作为回报。