美文网首页Android知识Android开发手机移动程序开发
Android 新布局:弹性布局ConstraintLayout

Android 新布局:弹性布局ConstraintLayout

作者: thiagooo0 | 来源:发表于2017-02-10 10:27 被阅读4965次

    ConstrainLayout是一个允许你用灵活的方法去设置你控件的位置和大小的ViewGroup。

    优点
    • 使用根据灵活,可以一个布局就完成界面。不需要像以前那样,layout嵌套layout。
    • 很好的拖拉控件的支持但是本文还是介绍代码的方式。
    配置

    只要android api超过9,添加依赖,就可以使用ConstrainLayout了。

    compile 'com.android.support.constraint:constraint-layout:1.0.0-beta4'

    一个简单的ConstrainLayout布局

    我们来看一个简单的ConstrainLayout布局。


    一个简单的ConstraintLayout布局

    我们可以看到,现在textview是水平垂直居中的。那都是下面这几句话的功劳。

        app:layout_constraintLeft_toLeftOf="@+id/activity_main"
        app:layout_constraintRight_toRightOf="@+id/activity_main"
        app:layout_constraintTop_toTopOf="@+id/activity_main"
        app:layout_constraintBottom_toBottomOf="@+id/activity_main"
    

    哇,这几个属性看起来很复杂很麻烦的感觉。实际上,都是一样的套路。

    我们可以解析一下。其实每一句属性都可以表达为layout_constraint本控件某一边缘_to目标控件某一边缘of
    举个例子:

    app:layout_constraintLeft_toRightOf : 表示的是,本控件的左边缘紧紧贴着目标控件的右边缘。

    preview展示图

    拉力偏重

    在上面的例子中,我们可以看到,textview两边的拉力偏重是相等的,都是50%。如果我们想要textview向左偏一点,那就可以调节一下水平的拉力偏重了。

    app:layout_constraintHorizontal_bias="0.3"

    这时候,左侧的拉力就占了0.3的偏重了。

    preview展示图

    连接到一个GONE的控件

    有请两位演员,testview tv1和tv2,我们可以看到,tv2的左边缘是贴着tv1的右边缘的。


    tv1和tv2

    这时候我们让tv1退场,把tv1设成gone,tv2就只能贴着父布局的边缘了。
    为了应对这种情况,android提供了goneMargin属性。我们可以给tv2设置一下。

    app:layout_goneMarginLeft="20dp"

    tv2就会和父布局的左边缘隔20dp了。


    Paste_Image.png

    constraintL还有很多知识我没有学习到,以后开发中遇到再来填坑

    参考:

    google文档

    ConstraintLayout on csdn

    相关文章

      网友评论

        本文标题:Android 新布局:弹性布局ConstraintLayout

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