ConstraintLayout视图的行为与RelativeLayout视图相同

时间:2018-05-07 10:32:08

标签: android android-constraintlayout

通过我为Constrainlayout研究的内容 -

  

对于大多数容器类,将窗口小部件的可见性标记为GONE   完全将它从测量和测量的一切中删除   容器的布局。但就好像小部件从未存在过一样   只需将其添加为“可见”,您就可以“重新加入”   。在Constrainlayout中,GONE的小部件被视为没有大小(宽度和高度)   0)并且没有边距。但是,ConstraintLayout仍然会   考虑到与这些GONE小部件相关的荣誉约束   他们的零大小和零利润状态。这允许你的约束   仍然工作,而不是完全打破。

但实际上我使用RelativeLayout和ConstraintLayout进行了测试,结果相同。甚至相对于那些GONE小部件的相关的尊重约束。在下面的代码中,第二个textview在第一个textview的底部对齐,第三个textview在第二个textview的底部对齐。如果我让第二个textview消失,第三个textview在第一个textview的底部而不是在它的顶部对齐。这意味着第二个textview android:layout_below =" @ id / first"即使在完成它之后也很荣幸。

通过我为Constrainlayout研究的内容 -

  

零大小是不可协商的。但是,你有可能   仍然希望将利润考虑在内。为此,有   您可以使用的app:layout_goneMarginStart等属性。作为   属性名称建议,这些提供了在使用时使用的边距   小部件本身标记为GONE。

但实际上我添加了app:layout_goneMarginTop =" @ dimen / dp60"第二个Gview textview,但第三个textview的位置仍然相同。

RelativeLayout的

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/first"
        android:text="first"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:visibility="gone"
        android:id="@+id/second"
        android:layout_below="@id/first"
        android:text="second"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/third"
        android:layout_below="@id/second"

        android:text="third"/>
</RelativeLayout>

ConstraintLayout

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/first"
        android:text="first"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:visibility="gone"
        android:id="@+id/second"
        app:layout_constraintTop_toBottomOf="@+id/first" 
        android:text="second"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/third"
        android:layout_below="@id/second"
        app:layout_constraintTop_toBottomOf="@+id/second"

        android:text="third"/>
</android.support.constraint.ConstraintLayout>

0 个答案:

没有答案