Constraint Layout 学习总结

想要使用Constraint Layout,最主要的是记住以下一些属性的作用

1. layout_constraintLeft_toLeftOf

这个代表了改控件的左边与目标控件的左边对齐。例如下布局:

<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/textView01"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:text="TextView01"
        app:layout_constraintLeft_toLeftOf="parent" />


    <TextView
        android:id="@+id/textView02"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:text="TextView02"
        app:layout_constraintLeft_toRightOf="@id/textView01" />

</android.support.constraint.ConstraintLayout>

这里写图片描述

app:layout_constraintLeft_toLeftOf=”parent”表示与父控件左对齐,app:layout_constraintLeft_toRightOf=”@id/textView01”表示左边与textview01的右边对齐。
类似的属性还有如下:
- layout_constraintRight_toLeftOf
- layout_constraintRight_toRightOf
- layout_constraintTop_toTopOf
- layout_constraintTop_toBottomOf
- layout_constraintBottom_toTopOf
- layout_constraintBottom_toBottomOf
- layout_constraintBaseline_toBaselineOf

2.layout_constraintDimensionRatio
  • 该属性设置控件的宽高比
android:id="@+id/btn01"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:text="BTN 01"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintDimensionRatio="2:1" /> 

这里写图片描述

3.app:layout_constraintHorizontal_weight:类似LinearLayout的weight属性
        android:id="@+id/btn01"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="BTN 01"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toLeftOf="@+id/btn02" />

    <Button
        android:id="@+id/btn02"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="BTN 02"
        app:layout_constraintLeft_toRightOf="@+id/btn01"
        app:layout_constraintRight_toLeftOf="@+id/btn03" />

    <Button
        android:id="@+id/btn03"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="BTN 03"
        app:layout_constraintLeft_toRightOf="@+id/btn02"
        app:layout_constraintRight_toRightOf="parent" />

以上布局的显示如下:
这里写图片描述
如需控制每个button的宽度比例,分别加上app:layout_constraintHorizontal_weight=4,2,1.
效果如下图:
这里写图片描述

3.app:layout_constraintHorizontal_bias

先上代码和效果图

    <Button
        android:id="@+id/btn01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintHorizontal_bias="0.1"
        android:text="BTN 01"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
         />

这里写图片描述
这个属性姑且理解为水平方向约束力的大小比例,取值通常为0~1。大于1则控件超出屏幕。
取值0.1代表控件左右两边的约束力为1:9,则左右两边的margin间隙也为1:9。
layout_constraintVertical_weight与之类似。

4.android.support.constraint.Guideline

这个并不是属性而是,一个控件。可以成为辅助线,只在preview中能看见而不会显示。
它有orientation属性表示纵向还是横向。
另外layout_constraintGuide_begin,layout_constraintGuide_end。
layout_constraintGuide_percent指定辅助线的位置,前两个以dp值指定,后者以百分值指定。
例如下面的代码:在离顶部72dp出和40%处有两条辅助线。

    <android.support.constraint.Guideline
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintGuide_begin="72dp" />

    <android.support.constraint.Guideline
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintGuide_percent="0.4" />

这里写图片描述
至于辅助线的用处,你应该想到了。把它当做参考物,作为类似layout_constraintLeft_toLeftOf这些属性的目标控件来用。只是不要用的太多,否则布局的代码会看起来会很乱,影响可读性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值