设置宽度以匹配ConstraintLayout中的约束

KG6*_*ZVP 79 android android-constraintlayout

我想将View的左侧和右侧约束到它的父视图的边距,并使其填充分配的空间.但是,将宽度设置为match_parent或者wrap_content似乎产生相同的结果.

有没有相当于match_constraints的东西(而不是match_parent和wrap_content)?难道match_parentwrap_content影响布局还是他们在新的约束布局忽略?

爱我最喜欢的平台的新布局系统!

Ari*_*eck 152

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"/>
Run Code Online (Sandbox Code Playgroud)

  • Android 团队应该让“match_parent”工作。这将是非常容易的。只需让 match_parent 提供相同的功能,就好像应用程序被限制为父级的开始和结束一样。很容易垂直或水平检测。 (7认同)

小智 95

match_parent不受支持.有了0dp,您可以将您的约束视为"可扩展",而不是"填充剩下的".

此外,0dp可以通过一个位置来定义,在该位置match_parent依赖于它的位置(x,y和宽度,高度)的父级

  • 为什么这是接受的答案?!?约束布局不支持match_parent.而这个答案没有办法实现它. (26认同)
  • 这个答案是对的.它明确指出不支持match_parent.此外,为了对'match_parent'设置执行合理的替代,0dp的约束设置为左和右的父(margin 0或pick to suit)将给出相同的结果.在Arieck的答案中,唯一真正遗漏在这个答案中的是需要在两侧(或垂直的顶部和底部)设置约束.我就是这样做的,我没有遇到任何问题.另外,当与其他组件一起使用时,它可用作重量设置. (5认同)
  • match_parent不受支持. (2认同)

Gen*_* Bo 25

显然match_parent是:

  • 适合直接观看ConstraintLayout
  • 对于嵌套在直接视图中的视图的确定ConstraintLayout

因此,如果您需要您的视图功能match_parent,那么:

  1. 直接孩子ConstraintLayout应该使用0dp
  2. 嵌套元素 (例如,ConstraintLayout的孙子)可以使用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>
Run Code Online (Sandbox Code Playgroud)


Mar*_*ski 14

match_parent不受支持ConstraintLayout.将宽度设置0dp为让它匹配约束.

  • 支持wrap_content (5认同)

xym*_*lon 10

来自官方文件:

重要说明:不建议对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" />
Run Code Online (Sandbox Code Playgroud)


小智 6

您可以检查您的适配器。

 1 - MyLayoutBinding binding = MyLayoutBinding.inflate(layoutInflater);
 2 - MyLayoutBinding binding = MyLayoutBinding.inflate(layoutInflater, viewGroup, false);
Run Code Online (Sandbox Code Playgroud)

当我使用1时,我遇到了和你一样的问题。你可以尝试2。