通过我为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>