我有一个EditText,它在Constraint Layout中具有开始和结束约束,并且在XML中带有用“ 0dp”声明的宽度。我试图弄清楚一旦应用程序启动后如何获得EditText的宽度,因为0dp
允许EditText在遵守起始/结束约束的同时在整个屏幕上伸展。
我尝试调用editText.measuredWidth
和editText.layoutParams.width
,但是它们的宽度均为0
。
<EditText
android:id="@+id/editText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_marginEnd="20dp"
android:layout_marginStart="10dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toEndOf="@+id/textBox"
app:layout_constraintEnd_toEndOf="parent"
android:dropDownWidth="match_parent"
android:background="@android:color/black"/>
我怀疑此结果是由于我在onCreate
的{{1}}中调用它的原因-如果是这种情况,我应该在哪里调用宽度?
答案 0 :(得分:0)
使用View.post (Runnable r)
当确定了视图的大小后,将在视图膨胀后执行指定的可运行对象。然后,调用view.getWidth()应该返回正确的结果。
当然还有其他方法,但是我认为这是一种简单的方法。尤其是对于Kotlin(和扩展程序),您可以做到
view.post {
//do sth with view.getWidth() here
}