我想将视图的左侧和右侧限制为其父视图的边距并使其填充分配的空间。但是,将宽度设置为match_parent
或wrap_content
似乎会产生相同的结果。
是否有与 match_constraints 等价的东西(与 match_parent 和 wrap_content 相对)?match_parent
影响布局还是wrap_content
在新的约束布局中被忽略?
我想将视图的左侧和右侧限制为其父视图的边距并使其填充分配的空间。但是,将宽度设置为match_parent
或wrap_content
似乎会产生相同的结果。
是否有与 match_constraints 等价的东西(与 match_parent 和 wrap_content 相对)?match_parent
影响布局还是wrap_content
在新的约束布局中被忽略?
match_parent
不允许。但是您实际上可以将宽度和高度设置为 0dp,并将顶部和底部或左右约束设置为“父级”。
例如,如果你想match_parent
限制元素的宽度,你可以这样做:
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
match_parent
不支持,所以使用android:layout_width="0dp"
. 使用0dp
,您可以将您的约束视为“可扩展”而不是“填充剩下的内容”。
此外,0dp
可以由一个位置定义,match_parent
它的位置依赖于它的父级(x,y 和宽度,高度)
显然match_parent
是:
ConstraintLayout
ConstraintLayout
因此,如果您需要您的视图作为match_parent
,那么:
ConstraintLayout
应该使用的直接子级0dp
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>
match_parent
不支持ConstraintLayout
。将宽度设置0dp
为使其匹配约束。
来自官方文档:
重要提示:不建议将 MATCH_PARENT 用于 ConstraintLayout 中包含的小部件。可以通过使用 MATCH_CONSTRAINT 来定义类似的行为,并将相应的左/右或上/下约束设置为“父”。
所以如果你想达到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" />
您可以检查您的适配器。
1 - MyLayoutBinding binding = MyLayoutBinding.inflate(layoutInflater);
2 - MyLayoutBinding binding = MyLayoutBinding.inflate(layoutInflater, viewGroup, false);
我用1的时候和你有同样的问题,你可以试试2。
直接将您的视图设置为 match_parent 是不可能的,但我们可以用一些不同的方式来实现,但不要忘记在 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"/>
将宽度或高度(您需要匹配父级的内容)设置为 0dp 并设置左侧、右侧、顶部、底部的边距作为匹配父级
在办公室文档中: https ://developer.android.com/reference/android/support/constraint/ConstraintLayout
当维度设置为 MATCH_CONSTRAINT 时,默认行为是让结果大小占用所有可用空间。
使用 0dp,相当于“MATCH_CONSTRAINT”
重要提示:不建议将 MATCH_PARENT 用于 ConstraintLayout 中包含的小部件。可以通过使用 MATCH_CONSTRAINT 来定义类似的行为,并将相应的左/右或上/下约束设置为“父”
如果您希望 TextView 位于父级的中心。
您的主要布局是约束布局
<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>