您可以在这里看到我有一个CardView,它是ConstraintLayout的父级。
此外,CardView layout_width设置为match_parent。并且ConstraintLayout设置为match_parent。之所以可以这样,是因为CardView和ConstraintLayout是整个布局区域的宽度。
问题 您还可以看到我有一个TextInputLayout,它是ConstraintLayout的子级。我对layout_width唯一的设置选择是match_constraint(如下图所示)。
当我选择match_constraint时,该值将自动设置为0dp,并且小部件最终在屏幕上显示为0dp。
这是错误吗?
为什么TextInputLayout不遵循ConstraintLayout的宽度(整个布局的宽度)-与match_parent类似? 您能建议解决此问题的正确方法吗? TextInputLayout的layout_width是否应设置为其他值?
答案 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"
然后布局看起来像我期望的那样。这似乎解决了问题。正确吗?