我想约束一个视图的左边和右边到它的父视图的边距,并使其填充分配的空间。但是,将宽度设置为 match_parent或 wrap_content似乎会产生相同的结果。
match_parent
wrap_content
是否有一些等价的匹配 _ 约束(相反的匹配 _ 父和包装 _ 内容) ?match_parent和 wrap_content是影响布局还是在新的约束布局中忽略它们?
ConstraintLayout不支持 match_parent。请将宽度设置为 0dp以使其匹配约束。
ConstraintLayout
0dp
不支持 match_parent,因此使用 android:layout_width="0dp"。使用 0dp,您可以将约束看作是“可伸缩的”,而不是“填充剩下的”。
android:layout_width="0dp"
此外,0dp可以由一个位置定义,其中 match_parent依赖于它的父节点来定义它的位置(x,y 和 width,height)
不允许使用 match_parent。但是您实际上可以将 width 和 height 设置为0dp,并将 top 和 bottom 或 left 和 right 约束设置为“ father”。
例如,如果你想在元素的宽度上有 match_parent约束,你可以这样做:
<TextView android:layout_width="0dp" android:layout_height="wrap_content" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"/>
显然,match_parent是:
因此,如果你需要你的意见作为 match_parent的功能,然后:
例如:
<android.support.constraint.ConstraintLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingBottom="16dp"> <android.support.design.widget.TextInputLayout android:id="@+id/phoneNumberInputLayout" android:layout_width="0dp" android:layout_height="wrap_content" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent"> <android.support.design.widget.TextInputEditText android:id="@+id/phoneNumber" android:layout_width="match_parent" android:layout_height="wrap_content"/> </android.support.design.widget.TextInputLayout>
设置宽度或高度(任何你需要匹配父级)为0dp,并设置左边距,右边距,上边距,下边距作为匹配父级
为了让你的视图成为 match _ father 是不可能的,但是我们可以用一些不同的方法来做,但是不要忘记在 Start 和 End 中使用 Left 和 Right 属性,因为如果你使用 RTL 支持,它将是必需的。
<Button android:layout_width="0dp" android:layout_height="wrap_content" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"/>
From the 官方文件:
重要提示: 不建议将 MATCH _ PARENT 用于包含在 ConstraintLayout. Similar behavior can be defined by using MATCH_CONSTRAINT with the corresponding left/right or top/bottom constraints being set to "parent".
因此,如果你想达到 MATCH_PARENT效果,你可以这样做:
MATCH_PARENT
<TextView android:id="@+id/textView" android:layout_width="0dp" android:layout_height="wrap_content" android:gravity="center" android:text="TextView" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" />
in the office doc: Https://developer.android.com/reference/android/support/constraint/constraintlayout
当维度设置为 MATCH _ CONSTRINT 时,默认行为是让结果大小占用所有可用空间。
使用0dp,相当于“ MATCH _ CONSTRINT”
重要提示: 不建议对 ConstraintLayout 中包含的小部件使用 MATCH _ PARENT。类似的行为可以通过使用 MATCH _ CONSTRINT 来定义,并将相应的 left/right 或 top/bottom 约束设置为“ father”
您可以检查您的适配器。
1 - MyLayoutBinding binding = MyLayoutBinding.inflate(layoutInflater); 2 - MyLayoutBinding binding = MyLayoutBinding.inflate(layoutInflater, viewGroup, false);
I had a same problem like you when I used 1. You can try 2.
如果希望 TextView 位于父节点的中央. 。 Your main layout is Constraint Layout
<androidx.appcompat.widget.AppCompatTextView android:layout_width="0dp" android:layout_height="wrap_content" android:text="@string/logout" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" android:gravity="center"> </androidx.appcompat.widget.AppCompatTextView>