相对定位 Margin 简介 :
//左侧边的空白
android:layout_marginStart
//右侧边的空白
android:layout_marginEnd
//左侧边的空白
android:layout_marginLeft
//右侧边的空白
android:layout_marginRight
//顶部边的空白
android:layout_marginTop
//底部边的空白
android:layout_marginBottom
约束布局 组件 可见性说明 :
layout_goneMarginStart
layout_goneMarginEnd
layout_goneMarginLeft
layout_goneMarginTop
layout_goneMarginRight
layout_goneMarginBottom
组件设置 GONE 属性 改变示例 :
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
tools:layout_editor_absoluteY="25dp">
<!--
被 约束 的组件
该组件 垂直方向 居中于整体布局
其左侧 紧贴 目标组件 , 右侧约束于 父容器
-->
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="被约束组件"
app:layout_constraintStart_toEndOf="@+id/button"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent" />
<!--
约束 到的 目标组件
该组件 垂直方向 居中于整体布局
其左侧紧贴布局左边缘 , 但是有 50dip 的边距 Margin
如果该组件设置不可见 , 就会变成一个点 , 其 50dip 的边距也会消失
如果设置了 layout_goneMarginLeft 属性 , 其消失状态下 , 该边距有效
-->
<Button
android:id="@+id/button"
android:layout_width="188dp"
android:layout_height="188dp"
android:text="目标组件"
android:visibility="visible"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
android:layout_marginLeft="50dip"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.5" />
</android.support.constraint.ConstraintLayout>
android:visibility="visible"
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
tools:layout_editor_absoluteY="25dp">
<!--
被 约束 的组件
该组件 垂直方向 居中于整体布局
其左侧 紧贴 目标组件 , 右侧约束于 父容器
-->
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="被约束组件"
app:layout_constraintStart_toEndOf="@+id/button"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent" />
<!--
约束 到的 目标组件
该组件 垂直方向 居中于整体布局
其左侧紧贴布局左边缘 , 但是有 50dip 的边距 Margin
如果该组件设置不可见 , 就会变成一个点 , 其 50dip 的边距也会消失
如果设置了 layout_goneMarginLeft 属性 , 其消失状态下 , 该边距有效
-->
<Button
android:id="@+id/button"
android:layout_width="188dp"
android:layout_height="188dp"
android:text="目标组件"
android:visibility="gone"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
android:layout_marginLeft="50dip"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.5" />
</android.support.constraint.ConstraintLayout>
当 被约束组件的某位置 ( Left, Right, Top, Bottom ) 被 约束到的目标组件可见性 ( Visibility ) 是 View.GONE 时 , 可以使用下面的属性值 , 设置一个不同的 Margin 属性值 ;
layout_goneMarginStart
layout_goneMarginEnd
layout_goneMarginLeft
layout_goneMarginTop
layout_goneMarginRight
layout_goneMarginBottom
注意 : 该属性是设置给 可见组件的 , 当该组件被约束到的组件不可见时 , 该属性生效 ;
goneMargin 属性示例 :
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
tools:layout_editor_absoluteY="25dp">
<!--
被 约束 的组件
该组件 垂直方向 居中于整体布局
其左侧 紧贴 目标组件 , 右侧约束于 父容器
-->
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="被约束组件"
app:layout_goneMarginLeft="50dip"
app:layout_constraintStart_toEndOf="@+id/button"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent" />
<!--
约束 到的 目标组件
该组件 垂直方向 居中于整体布局
其左侧紧贴布局左边缘 , 但是有 50dip 的边距 Margin
如果该组件设置不可见 , 就会变成一个点 , 其 50dip 的边距也会消失
如果设置了 layout_goneMarginLeft 属性 , 其消失状态下 , 该边距有效
-->
<Button
android:id="@+id/button"
android:layout_width="188dp"
android:layout_height="188dp"
android:text="目标组件"
android:visibility="visible"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
android:layout_marginLeft="50dip"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.5" />
</android.support.constraint.ConstraintLayout>
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
tools:layout_editor_absoluteY="25dp">
<!--
被 约束 的组件
该组件 垂直方向 居中于整体布局
其左侧 紧贴 目标组件 , 右侧约束于 父容器
-->
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="被约束组件"
app:layout_constraintStart_toEndOf="@+id/button"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent" />
<!--
约束 到的 目标组件
该组件 垂直方向 居中于整体布局
其左侧紧贴布局左边缘 , 但是有 50dip 的边距 Margin
如果该组件设置不可见 , 就会变成一个点 , 其 50dip 的边距也会消失
如果设置了 layout_goneMarginLeft 属性 , 其消失状态下 , 该边距有效
-->
<Button
android:id="@+id/button"
android:layout_width="188dp"
android:layout_height="188dp"
android:text="目标组件"
android:visibility="gone"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
android:layout_marginLeft="50dip"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.5" />
</android.support.constraint.ConstraintLayout>
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
tools:layout_editor_absoluteY="25dp">
<!--
被 约束 的组件
该组件 垂直方向 居中于整体布局
其左侧 紧贴 目标组件 , 右侧约束于 父容器
-->
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="被约束组件"
app:layout_goneMarginLeft="50dip"
app:layout_constraintStart_toEndOf="@+id/button"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent" />
<!--
约束 到的 目标组件
该组件 垂直方向 居中于整体布局
其左侧紧贴布局左边缘 , 但是有 50dip 的边距 Margin
如果该组件设置不可见 , 就会变成一个点 , 其 50dip 的边距也会消失
如果设置了 layout_goneMarginLeft 属性 , 其消失状态下 , 该边距有效
-->
<Button
android:id="@+id/button"
android:layout_width="188dp"
android:layout_height="188dp"
android:text="目标组件"
android:visibility="gone"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
android:layout_marginLeft="50dip"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.5" />
</android.support.constraint.ConstraintLayout>
相关代码地址 :