约束布局(ConstraintLayout)1
<Buttonandroid:id="@+id/btAge"android:layout_width="150dp"android:layout_height="wrap_content"app:layout_constraintTop_toBottomOf="@+id/btName" />
<android.support.constraint.Barrierandroid:id="@+id/barrier"android:layout_width="wrap_content"android:layout_height="wrap_content"app:barrierDirection="end"app:constraint_referenced_ids="btName,btAge" />
<Buttonandroid:id="@+id/btAddress"android:layout_width="120dp"android:layout_height="wrap_content"app:layout_constraintStart_toEndOf="@+id/barrier" />
这里 btAge 由具有 150dp 是大于的宽度 btName 具有 100dp 所以垒宽度 150dp 之后将设置的导线。在运行期间,如果宽度变化超过屏障,则会自动重新计算导线并进一步推移引用的 View。
分组(Group)
这是令很多人充满期待的功能。如果多个视图可见性(visibility )需要设置为显示或隐藏,用 Group 则可以轻松的完成。想想一个包含各种 View 的 ViewGroup,只需要设置 ViewGroup 的 visibility 为显示或隐藏,它的所有被包含的子 View 也会同时被显示或隐藏。现在使用 Group 就可以完成同样的需求,但他并不是一个 ViewGroup,它是在平面结构上的一个 Group,只需要引用相关 View 的 Id 即可。
<Buttonandroid:id="@+id/btCenter"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Center Button"android:textAllCaps="false"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent" />
<Buttonandroid:id="@+id/btAlign"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Aligned Button"android:textAllCaps="false"app:layout_constraintCircle="@id/btCenter"app:layout_constraintCircleAngle="45"app:layout_constraintCircleRadius="120dp" />
<android.support.constraint.Groupandroid:id="@+id/group"android:layout_width="wrap_content"android:layout_height="wrap_content"android:visibility="gone"app:constraint_referenced_ids="btAlign,btCenter" />
占位符(PlaceHolder)
它用于在屏幕上动态设置内容,
只需传递它的 id 即可将任何视图设置为占位符。如果视图与占位符在同一屏幕上存在,则其可见性将自动设置为消失。
< ImageViewandroid:id =“@ + id / iv_call”android:layout_width =“wrap_content”android:layout_height =“wrap_content”android:src =“@ drawable / ic_launcher_background” />
< android.support.constraint.Placeholderandroid:layout_width =“match_parent”android:layout_height =“100dp”app:content =“@ + id / iv_call”app:layout_constraintBottom_toBottomOf =“parent” />
以编程方式设置内容,请使用 placeholder.setContentId(viewId)
尺寸约束(Dimension constraints)
通常需要将视图宽度或高度保持为包裹内容(wrap content)而不是匹配约束(match constraint)或匹配父项(match parent),但不幸的是包裹内容会覆盖应用的约束,并且在宽度或高度更改时与约束重叠
在 1.1.0 版本中,这个问题可以通过使用
app:layout_constrainedWidth=”true”
或
app:layout_constrainedHeight=”true”
来解决,它所做的是强制约束,并让视图宽度/高度保持为包裹内容
<Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello this is an example with constraint width"app:layout_constrainedWidth="true"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="@+id/guideline_50"/>
百分比约束
约束布局真正缺少的一件事就是能够按百分比定义宽度和高度。在百分比中定义宽度或高度对于创建富有表现力的 UI 来说非常有用,因为在移动设备或平板电脑上查看时,dp 中的宽度或高度并不能很好地工作。
但是现在可以使用
layout_constraintWidth_percent
layout_constraintHeight_percent
以百分比的形式定义宽度和高度**。**
注意
为了使用百分比来表示宽度和高度,尺寸应该是匹配约束(0dp),而
app:layout_constraintWidth_default =“percent
或
app:layout_constraintHeight_default =”percent“
需要设置为百分比形式< TextViewandroid:id =“@ + id / bt”android:layout_width =“0dp”android:layout_height =“wrap_content”android:text =“Hello 宽度百分比”
评论