为什么TextInputLayout不遵循父ConstraintLayout的宽度?

时间:2019-08-11 16:40:11

标签: android-layout android-cardview android-constraintlayout

您可以在这里看到我有一个CardView,它是ConstraintLayout的父级。

componentTree view

此外,CardView layout_width设置为match_parent。并且ConstraintLayout设置为match_parent。之所以可以这样,是因为CardView和ConstraintLayout是整个布局区域的宽度。

问题 您还可以看到我有一个TextInputLayout,它是ConstraintLayout的子级。我对layout_width唯一的设置选择是match_constraint(如下图所示)。

textinputlayout layout_width

当我选择match_constraint时,该值将自动设置为0dp,并且小部件最终在屏幕上显示为0dp。

这是错误吗?

为什么TextInputLayout不遵循ConstraintLayout的宽度(整个布局的宽度)-与match_parent类似? 您能建议解决此问题的正确方法吗? TextInputLayout的layout_width是否应设置为其他值?

2 个答案:

答案 0 :(得分:1)

您不应该将match_parent的子项{{1}中的Views用于ConstraintLayout

  

重要提示:不建议对ConstraintLayout中包含的窗口小部件使用MATCH_PARENT。可以使用MATCH_CONSTRAINT定义类似的行为,并将相应的左/右或上/下约束设置为“父”。

在您的情况下,您缺少的是end的{​​{1}}约束。要使用TextInputLayout(match_constraint),您需要为该维度指定两个约束:

0dp

答案 1 :(得分:0)

如果我查看布局的XML,我会看到以下TextInputLayout

<android.support.design.widget.TextInputLayout
     android:layout_width="0dp"
     android:layout_height="wrap_content"
     android:id="@+id/description_layout"
    app:layout_constraintTop_toTopOf="parent" 
app:layout_constraintStart_toStartOf="parent">

如果我按照以下方式更改layout_width(通过手动输入值):

android:layout_width="match_parent"

然后布局看起来像我期望的那样。这似乎解决了问题。正确吗?

enter image description here