ConstraintLayout使用 笔记总结

Posted wzj_what_why_how

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ConstraintLayout使用 笔记总结相关的知识,希望对你有一定的参考价值。

场景:实现文本对齐。属性:layout_constraintBaseline_toBaselineOf

  • Baseline指的是文本基线:比如两个TextView的高度不一致,但是又希望他们文本对齐,这个时候就可以使用layout_constraintBaseline_toBaselineOf

角度定位。属性:app:layout_constraintCircle ; app:layout_constraintCircleAngle ;app:layout_constraintCircleRadius

  • 角度定位指的是可以用一个角度和一个距离来约束两个空间的中心。

      <TextView
              android:id="@+id/TextView1"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content" />
    
      <TextView
          android:id="@+id/TextView2"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          app:layout_constraintCircle="@+id/TextView1"       //参照物
          app:layout_constraintCircleAngle="120"             //角度
          app:layout_constraintCircleRadius="150dp" />       //两点之间的距离
    

属性:goneMargin:用于约束的控件可见性被设置为gone的时候使用的margin值。在参照物被设置为gone的时候见效

    layout_goneMarginStart
    layout_goneMarginEnd
    layout_goneMarginLeft
    layout_goneMarginTop
    layout_goneMarginRight
    layout_goneMarginBottom

属性:偏移:layout_constraintHorizontal_bias ; layout_constraintVertical_bias

  • 区别与margin。这两个的取值是倍数:0~1.

属性: 尺寸约束的细节:

  • 使用wrap_content的时候,以使用下列属性来控制最大、最小的高度或宽度:
    • android:minWidth 最小的宽度
    • android:minHeight 最小的高度
    • android:maxWidth 最大的宽度
    • android:maxHeight 最大的高度
      当ConstraintLayout为1.1版本以下时,使用这些属性需要加上强制约束,如下所示:
    • app:constrainedWidth=”true”
    • app:constrainedHeight=”true”
  • 使用0dp,不推荐使用match_parent

属性:layout_constraintDimensionRatio 宽高比

  • 比如正方形: app:layout_constraintDimensionRatio=“1:1”
  • 可以在前面加W或H,分别指定宽度或高度限制。 例如:
    app:layout_constraintDimensionRatio=“H,2:3” //指的是 高:宽=2:3
    app:layout_constraintDimensionRatio=“W,2:3” //指的是 宽:高=2:3

属性:layout_constraintWidth_percent 设置在布局内部的占比。比如实现在布局内部的占比一半并且居中

<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/button"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="textView"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintWidth_percent="0.5"/>

</android.support.constraint.ConstraintLayout>

链: 当控件与控件之间相互约束的话,就可以将它们视为一条链。

  • 属性:layout_constraintHorizontal_chainStyle:改变整条链的样式,三种:
    • app:layout_constraintHorizontal_chainStyle=“packed” //打包起来:去掉了两两之间的间距
    • app:layout_constraintHorizontal_chainStyle=“spread” //(默认) 展开,两两之间平分间距
    • app:layout_constraintHorizontal_chainStyle=“spread_inside”// 展开,两两之间平分间距但是链的两端会贴边
      ps:垂直方向也有对应的三种

控件:androidx.constraintlayout.widget.Barrier 屏障,或者说参照线。

  • 据其包含的组件在某个方向最远的边缘确定。

  • 用于被参照物不确定(比如说宽高不确定,或者说显示隐藏不确定)的情况。将参照物进行打包。

    • 配合使用的属性:app:constraint_referenced_ids : 存放引用的参照物,用,隔开

        <androidx.constraintlayout.widget.Barrier
            android:id="@+id/barrier_end"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:constraint_referenced_ids="fl_screen_normal,btn_save"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent" />
      

控件:androidx.constraintlayout.widget.Group: 把多个控件打包,方便控制一整组控件的显示隐藏
- 配合使用的属性:app:constraint_referenced_ids : 存放引用的控件,用,隔开

以上是关于ConstraintLayout使用 笔记总结的主要内容,如果未能解决你的问题,请参考以下文章

ConstraintLayout 学习笔记

ConstraintLayout 学习笔记

ConstraintLayout

Android ConstraintLayout 使用与适配(使用篇)

Android ConstraintLayout 使用与适配(使用篇)

Android ConstraintLayout 使用与适配(适配篇)