ConstraintLayout

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:角度

circular.gif

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" />
barrier.gif

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设置比重

chain.gif

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" />
flow.gif

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"
   />
layer.gif

motion layout

初识

官方文档:

codelab

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容