Baseline
layout_constraintBaseline_toBaselineOf
当前视图与目标视图文字底部对齐
bias
app:layout_constraintHorizontal_bias
bias值=子View左相关的长度/(子View左相关的长度+其右相关的长度)
bias表示在布局方向上的偏移占比:
百分比布局
layout_constraintDimensionRatio
W, 1:1 默认 可以不指定比例方向
H, 1:1
layout_constraintWidth_percent
percent:有三种,width,height,guide
相对父布局百分比
敲percent,as提示
强制约束
当一个控件设为wrap_content时,再添加约束尺寸是不起效果的。如需生效,需要设置如下属性为true:
app:layout_constrainedWidth=”true|false”
app:layout_constrainedHeight=”true|false”
guide
https://blog.csdn.net/u011976726/article/details/79377774
可以理解为布局辅助线,用于布局辅助,不在设备上显示。
垂直:宽度为0,高度等于父容器
水平:高度为0,宽度等于父容器
<android.support.constraint.Guideline
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/guidelineBegin"
app:layout_constraintGuide_percent="0.5"
app:layout_constraintStart_toStartOf="@id/button"
android:orientation="vertical"/>
<Button
android:text="Button"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/button"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@+id/guidelineBegin"
android:layout_marginTop="16dp"
app:layout_constraintTop_toTopOf="parent" />
圆形定位
<Button
android:id="@+id/bt_3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="CCC"
android:textSize="20sp"
app:layout_constraintCircle="@id/bt_2"
app:layout_constraintCircleRadius="80dp"
app:layout_constraintCircleAngle="135"/>
敲circle,as提示
写在目标控件上,circle:参照,radius:半径,angle:角度
barrier 辅助线
https://blog.csdn.net/hepann44/article/details/80678217
某方向,限制源上极值作为基准线
<android.support.constraint.Barrier
android:id="@+id/barrier"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:barrierDirection="right"
app:constraint_referenced_ids="button2,button1" />
<TextView
android:id="@+id/TextView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintLeft_toRightOf="@+id/barrier" />
group控制
<android.support.constraint.Group
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
app:constraint_referenced_ids="bt_4,bt_3"/>
findViewById(R.id.group).setVisibility(View.GONE);
chain
1:多个控件相互依赖形成链
2:在链头设置chainstyle
特殊:
chain上控件都是match/0.。。可以使用weight设置比重
layout_optimizationLevel
2.0
flow
https://blog.csdn.net/weixin_43619188/article/details/117418883
<flow 布局,,constraint_referenced_ids:指定flow的控件
wrapmode- ~style ~bias
<androidx.constraintlayout.helper.widget.Flow
android:id="@+id/flow"
//宽度要指定,否则会顶出屏幕外面
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
//引用的id(内部的view的id)
app:constraint_referenced_ids="tv_type,tv_online_state,tv_switch_state"
//chain或者aligned,chain:链形式,依次挨着排,aligned会两端对齐
app:flow_wrapMode="chain"
//首行的对齐方式,packed:靠最左侧挨着排,水平间隔:horizontalGap生效,
// spread:分散对齐,两端不贴边。spread_inside:分散对齐,两头贴边
app:flow_firstHorizontalStyle="packed"
//最后一行的对齐方式,其他属性参考firstHorizontalStyle
app:flow_lastHorizontalStyle="packed"
// 全局水平bias,为0时,每行都贴左边,可解决中间行单独占一行时,不贴最左侧的问题
app:flow_horizontalBias="0"
// 第一行水平bias,为0时,贴最左边
app:flow_firstHorizontalBias="0"
// 最后一行水平bias,为0时,贴最左边
app:flow_lastHorizontalBias="0"
// 控件水平方向上的间隔
app:flow_horizontalGap="10dp"
// 行间隔
app:flow_verticalGap="8dp"
app:layout_constraintEnd_toStartOf="@id/ibt_go"
app:layout_constraintStart_toEndOf="@id/guideline"
app:layout_constraintTop_toTopOf="@id/tv_org_name" />
layer
如果您想对多个视图整体进行旋转 (rotate)、平移 (translate) 或缩放 (scale) 操作,那么 Layer 将会是最佳的选择
<androidx.constraintlayout.helper.widget.Layer
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:constraint_referenced_ids="card1, card2, card3"
/>