美文网首页
ConstraintLayout(约束布局)的使用

ConstraintLayout(约束布局)的使用

作者: liubaobaobao11 | 来源:发表于2019-07-26 15:51 被阅读0次

    今天跟大家分享一下ConstraintLayout布局的使用,也算是为自己做的笔记吧。

    ConstraintLayout是2016年Google的I/O大会上重点宣传的一个新功能。(已经出了这么久了,最近才开始使用这个布局,为什么要使用这个布局呢?)它有一个明显的优点:就是可以有效的解决布局嵌套过多的问题,使用一层布局就可以解决复杂的嵌套布局(此处在推荐一个控件Guideline,二者配合使用效果更佳)。ConstraintLayout有点类似于RelativeLayout,但是比RelativeLayout更强大。下面看一下基本使用:

    ConstraintLayout的基本属性

    主要是通过四个边来确定视图的大小和位置的,所以只要对4个边做约束即可:

    app:layout_constraintStart_toStartOf=""

    app:layout_constraintStart_toEndOf=""

    app:layout_constraintTop_toTopOf=""

    app:layout_constraintTop_toBottomOf=""

    app:layout_constraintEnd_toStartOf=""

    app:layout_constraintEnd_toEndOf=""

    app:layout_constraintBottom_toTopOf=""

    app:layout_constraintBottom_toBottomOf=""

    下面简单做一个登陆页面,如下:

    图1

    <?xml version="1.0" encoding="utf-8"?>

    <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"

        android:padding="50.0dip">

        <EditText

            android:id="@+id/username"

            android:layout_width="0.0dip"

            android:layout_height="50.0dip"

            android:layout_marginTop="150.0dip"

            android:hint="请输入账号"

            app:layout_constraintEnd_toEndOf="parent"

            app:layout_constraintStart_toStartOf="parent"

            app:layout_constraintTop_toTopOf="parent" />

        <EditText

            android:id="@+id/password"

            android:layout_width="0.0dip"

            android:layout_height="50.0dip"

            android:layout_marginTop="25.0dip"

            android:hint="请输入密码"

            app:layout_constraintEnd_toEndOf="@+id/username"

            app:layout_constraintStart_toStartOf="@+id/username"

            app:layout_constraintTop_toBottomOf="@+id/username" />

        <Button

            android:layout_width="0.0dip"

            android:layout_height="wrap_content"

            android:layout_marginTop="30.0dip"

            android:text="登录"

            app:layout_constraintEnd_toEndOf="@+id/password"

            app:layout_constraintStart_toStartOf="@+id/password"

            app:layout_constraintTop_toBottomOf="@+id/password" />

    </android.support.constraint.ConstraintLayout>

    控件居中(※)

    想让登录按钮居中,只要把Button的android:layout_width=“wrap_content“即可,如下图

    图2

       <Button

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_marginTop="30.0dip"

        android:text="登录"

        app:layout_constraintEnd_toEndOf="@+id/password"

        app:layout_constraintStart_toStartOf="@+id/password"

        app:layout_constraintTop_toBottomOf="@+id/password" />

    链式layout_constraintHorizontal_chainStyle方式

    图3

        <TextView

        android:id="@+id/textView2"

        android:layout_width="wrap_content"

        android:layout_height="50dp"

        android:layout_marginStart="8dp"

        android:layout_marginBottom="8dp"

        android:background="@color/colorAccent"

        android:gravity="center"

        android:text="TextView"

        app:layout_constraintHorizontal_chainStyle="spread"

        app:layout_constraintBottom_toBottomOf="parent"

        app:layout_constraintEnd_toStartOf="@+id/textView3"

        app:layout_constraintStart_toStartOf="parent" />

        <TextView

        android:id="@+id/textView3"

        android:layout_width="wrap_content"

        android:layout_height="50dp"

        android:layout_marginStart="8dp"

        android:background="@color/colorPrimary"

        android:gravity="center"

        android:text="TextView"

        app:layout_constraintBottom_toBottomOf="@+id/textView2"

        app:layout_constraintEnd_toStartOf="@+id/textView4"

        app:layout_constraintStart_toEndOf="@+id/textView2"

        app:layout_constraintTop_toTopOf="@+id/textView2" />

        <TextView

        android:id="@+id/textView4"

        android:layout_width="wrap_content"

        android:layout_height="50dp"

        android:layout_marginStart="8dp"

        android:background="@color/design_default_color_primary_dark"

        android:text="TextView"

        android:gravity="center"

        app:layout_constraintEnd_toEndOf="parent"

        app:layout_constraintStart_toEndOf="@+id/textView3"

        app:layout_constraintTop_toTopOf="@+id/textView3" />

    添加chain属性后几种情况,一下是官方给出的图片

    图4

    layout_constraintDimensionRatio使用

    图5

        <TextView

        android:layout_width="0.0dip"

        android:layout_height="0.0dip"

        android:background="@color/design_default_color_primary"

        app:layout_constraintDimensionRatio="3:1"

        app:layout_constraintEnd_toEndOf="parent"

        app:layout_constraintStart_toStartOf="parent"

        app:layout_constraintTop_toTopOf="parent" />

    以上就是ConstraintLayout的基本使用,也是主要的使用,其他的属性用的比较少,就不跟大家一一分享了。

    另:上述提到的Guideline控件

        <android.support.constraint.Guideline

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:orientation="horizontal"

        app:layout_constraintGuide_percent="0.5" />

    首先必须设置横竖屏,android:orientation="horizontal",其次设置占据屏幕的百分比app:layout_constraintGuide_percent="0.5",在复杂布局中与ConstraintLayout配合非常适用,推荐大家使用

    以上就是最近使用中遇到的ConstraintLayout使用的相关介绍,如有问题,请大家多多指教,互相学习!

    相关文章

      网友评论

          本文标题:ConstraintLayout(约束布局)的使用

          本文链接:https://www.haomeiwen.com/subject/byqdrctx.html