我想将视图的左右两侧限制为父视图的边距,并使其填充分配的空间。但是,将width设置为match_parent
或wrap_content
似乎会产生相同的结果。
是否有等同于match_constraints的东西(与match_parent和wrap_content相反)?难道match_parent
和wrap_content
影响布局还是他们在新的约束布局忽略?
为我最喜欢的平台爱上这个新的布局系统!
Answers:
match_parent
不支持。使用0dp
,您可以将约束视为“可扩展的”,而不是“填补剩下的”。
同样,0dp
可以通过位置定义位置,位置match_parent
取决于其位置的父级(x,y和宽度,高度)
match_parent
不被允许。但是您实际上可以将width和height设置为0dp,并将top和bottom或left和right约束设置为“ parent”。
因此,例如,如果您希望对match_parent
元素的宽度进行约束,可以这样进行:
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
显然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
使其与约束匹配。
从官方文档:
重要提示:不建议对ConstraintLayout中包含的窗口小部件使用MATCH_PARENT。可以使用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" />
要使您的视图成为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"/>
在办公室文档中:https : //developer.android.com/reference/android/support/constraint/ConstraintLayout
当尺寸设置为MATCH_CONSTRAINT时,默认行为是使结果尺寸占用所有可用空间。
使用0dp,相当于“ MATCH_CONSTRAINT”
重要提示:不建议对ConstraintLayout中包含的窗口小部件使用MATCH_PARENT。可以通过使用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>
当滚动视图中有约束布局时,我找到了另一个答案,那么我们需要将
android:fillViewport="true"
到滚动视图
和
android:layout_height="0dp"
在约束布局中
例:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="0dp">
// Rest of the views
</androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>
match_parent
对您不起作用?