Android ConstraintLayout详细教程

多个功能使用方法

基线对齐

  1. xml

基线对齐xml

  1. 属性
layout_constraintBaseline_toBaselineOf
  1. 效果

角度约束

  1. xml

角度约束xml

  1. 属性
 app:layout_constraintCircle="@id/iv_cycle_main"
        app:layout_constraintCircleAngle="45"
        app:layout_constraintCircleRadius="200dp"
  1. 效果

百分百偏移

  1. xml

百分比偏移

  1. 属性
 app:layout_constraintVertical_bias="0.3"
        app:layout_constraintHorizontal_bias="0.2"
  1. 效果

gone margin隐藏时的边距

  1. xml

xml

  1. 属性
  app:layout_goneMarginLeft="100dp"
        app:layout_goneMarginTop="200dp"
  1. 效果

设置控件尺寸spread撑满水平剩余宽度

  1. xml
    xml
  2. 属性
app:layout_constraintWidth_default="spread"
        app:layout_constraintHeight_default="spread"
  1. 效果

控件百分百宽度

  1. xml

xml

  1. 属性
app:layout_constraintWidth_percent="0.5"
  1. 效果

根据宽高比设置控件尺寸

  1. xml

xml

  1. 属性
app:layout_constraintDimensionRatio="1:2"
  1. 效果

将多个控件链式布局

  1. xml

xml

  1. 属性
app:layout_constraintHorizontal_chainStyle="spread"
  1. 效果

GuideLine辅助线的使用

  1. xml

xml

  1. 属性
   <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintGuide_percent="0.2"
        />
  1. 效果

控件分组后同步显示或隐藏

  1. xml

xml

  1. 属性
    <androidx.constraintlayout.widget.Group
        android:id="@+id/tv_group"
        app:constraint_referenced_ids="iv_group1,iv_group2,iv_group3"
        android:layout_width="wrap_content"
        android:visibility="visible"
        android:layout_height="wrap_content"/>
  1. 效果

placeholder使用,点击图标展示效果

  1. xml

xml

  1. 属性
 <androidx.constraintlayout.widget.Placeholder
        android:id="@+id/place1"
        android:layout_width="200dp"
        android:layout_height="200dp"
        app:layout_constraintRight_toRightOf="parent"

        app:layout_constraintBottom_toBottomOf="parent"
        />
  1. 效果
    点击图标,机器人图标会从左上角移动到右下角的站位位置

flow_wrapMode实现链约束

  1. xml

xml

  1. 属性
 <androidx.constraintlayout.helper.widget.Flow
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:constraint_referenced_ids="tvFlow1,tvFlow2,tvFlow3,tvFlow4,tvFlow5"
        app:layout_constraintLeft_toLeftOf="parent"
        app:flow_wrapMode="chain"
        app:layout_constraintTop_toTopOf="parent" />
  1. 效果

flow_wrapMode链约束中对每一行、第一行、最后一行设置链约束

  1. xml

xml

  1. 属性
<androidx.constraintlayout.helper.widget.Flow
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:constraint_referenced_ids="tvFlow1,tvFlow2,tvFlow3,tvFlow4,tvFlow5"
        app:layout_constraintLeft_toLeftOf="parent"
        android:orientation="horizontal"
        app:flow_horizontalGap="20dp"
        app:flow_wrapMode="chain"
        app:flow_horizontalStyle="spread_inside"
        app:flow_lastHorizontalStyle="packed"
        app:layout_constraintTop_toTopOf="parent" />
  1. 效果

流式布局中的对齐约束flow_verticalAlign、flow_horizontalAlign

  1. xml

xml

  1. 属性
 <androidx.constraintlayout.helper.widget.Flow
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:constraint_referenced_ids="tvFlow1,tvFlow2,tvFlow3,tvFlow4,tvFlow5"
        app:layout_constraintLeft_toLeftOf="parent"
        app:flow_verticalAlign="top"
        app:flow_wrapMode="chain"
        app:layout_constraintTop_toTopOf="parent" />
  1. 效果

流式布局中的数量约束flow_maxElementsWrap

  1. xml

xml

  1. 属性
 <androidx.constraintlayout.helper.widget.Flow
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:constraint_referenced_ids="tvFlow1,tvFlow2,tvFlow3,tvFlow4,tvFlow5"
        app:layout_constraintLeft_toLeftOf="parent"
        app:flow_wrapMode="chain"
        app:flow_maxElementsWrap="3"
        app:layout_constraintTop_toTopOf="parent" />
  1. 效果

使用Layer图层设置多个控件的组合背景

  1. xml

xml

  1. 属性
    <androidx.constraintlayout.helper.widget.Layer
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/shp_round"
        android:padding="10dp"
        app:constraint_referenced_ids="tv_head,tv_footer,tv_left,tv_right"
        tools:ignore="MissingConstraints" />
  1. 效果

图片处理器ImageFilterView

  1. xml

xml

  1. 属性
app:altSrc="@drawable/shp_round"
        app:crossfade="0.5"
        app:roundPercent="1"
  1. 效果

画出类似原型图的控件

  1. xml

xml

  1. 属性
<androidx.constraintlayout.utils.widget.MockView
        android:id="@+id/mock_icon"
        android:layout_width="100dp"
        android:layout_height="100dp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        android:layout_marginLeft="14dp"
        />
  1. 效果

屏障(将屏障两侧的view分隔开布局)

  1. xml

xml

  1. 属性
<androidx.constraintlayout.widget.Barrier
        android:id="@+id/barrier"
        android:layout_width="wrap_content"
        app:barrierDirection="end"
        app:constraint_referenced_ids="tv_access,tv_about"
        android:layout_height="wrap_content"/>
  1. 效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值