全网最清晰的ConstraintLayout教程

 

ConstraintLayout是AndroidStudio2.2新增的一个功能,那么这个到底是什么呢?首先第一点我们知道传统的安卓开发,页面基本都是XML编写实现,特别在一些复杂的页面上需要嵌套多层,降低了页面加载的效率,因为ConstraintLayout就可以很好的优化布局,还有一点我们羡慕IOS的拖拽XML页面在这里也可以更好的实现。当然我所说的以上两点都是优化以前的布局,这也是Google极力要做的事情

开始

想要使用ConstraintLayout,首先AS版本必须升级到2.2以上(我基本都是逢新必更),首先需要在app/build.gradle文件中添加ConstraintLayout依赖

implementation 'com.android.support.constraint:constraint-layout:1.1.2'

然后在项目的build.gradle文件buildscript和allprojects的repositories中添加google()

allprojects {
    repositories {
        google()
        jcenter()
    }
}

然后同步就可以愉快的使用ConstraintLayout了~~

首先我们按照Google文档的顺序依次学习https://developer.android.com/reference/android/support/constraint/ConstraintLayout 先来一波api

1. layout_constraint[自身控件位置]_to[目标控件位置]Of=="[目标控件ID]"

  • layout_constraintLeft_toLeftOf

  • layout_constraintLeft_toRightOf

  • layout_constraintRight_toLeftOf

  • layout_constraintRight_toRightOf

  • layout_constraintTop_toTopOf

  • layout_constraintTop_toBottomOf

  • layout_constraintBottom_toTopOf

  • layout_constraintBottom_toBottomOf

  • layout_constraintBaseline_toBaselineOf

  • layout_constraintStart_toEndOf

  • layout_constraintStart_toStartOf

  • layout_constraintEnd_toStartOf

  • layout_constraintEnd_toEndOf

看到这些猜也能猜出个大概~比如layout_constraintLeft_toLeftOf就是说当前控件的Left在目标控件的Left上。如果目标控件为父控件则id可以直接写成parent。比如要实现B控件在A控件右面,则在B控件中设置layout_constraintLeft_toRightOf。意思就是说B控件的左面在A控件的右面~

2. Margins

  • android:layout_marginStart

  • android:layout_marginEnd

  • android:layout_marginLeft

  • android:layout_marginTop

  • android:layout_marginRight

  • android:layout_marginBottom

这个与之前其他viewgroup属性一致,不一样的就是多了以下几点:

  • layout_goneMarginStart

  • layout_goneMarginEnd

  • layout_goneMarginLeft

  • layout_goneMarginTop

  • layout_goneMarginRight

  • layout_goneMarginBottom

goneMargin属性是指目标控件GONE掉之后,自身控件可以设置个margin值,这里有一点需要敲黑板,目标控件就是相对于的那个控件

3. Bias

  • `layout_constraintHorizontal_bias``

  • layout_constraintVertical_bias

这个属性的意思是可以使用偏差属性调整定位以使一侧偏向另一侧,即控件距离左右百分比(layout_constraintHorizontal_bias)和距离上下百分比(layout_constraintVertical_bias)

4. WRAP_CONTENT : enforcing constraints (*Added in 1.1*)

强制约束

  • app:layout_constrainedWidth=”true|false”

  • app:layout_constrainedHeight=”true|false”

true代表防止约束失效,默认为false,比如:B在A的右边app:layout_constraintLeft_toRightOf="@+id/a",但是当A的内容越来越多并且超过了A到父控件最右的距离,此时就会约束失效使B的一部分出现了A的非右边。如果B设置了该属性为true,则B始终出现在A的右边,不会发生约束失效

5. Ratio

app:layout_constraintDimensionRatio="H,16:9"

不用多说百分比布局是android中常用的一种适配布局H或W则代表以高或宽为基准

6. Guideline

layout_constraintGuide_begin 距离父容器起始位置的距离(左侧或顶部)

layout_constraintGuide_end 距离父容器结束位置的距离(右侧或底部)

layout_constraintGuide_percent 距离父容器宽度或高度的百分比

其实很好理解,比如

  <android.support.constraint.Guideline
        android:id="@+id/guide1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintGuide_percent="0.5" />
​
    <android.support.v7.widget.AppCompatButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintLeft_toRightOf="@+id/guide1" />

则表示在垂直方向上画一根基准线(只是参考线,并不进行view绘制)然后其他控件可以根据这条线进行放置

7. Barrier

<android.support.v7.widget.AppCompatButton
        android:id="@+id/a"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="a" />
​
    <android.support.v7.widget.AppCompatButton
        android:id="@+id/b"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="bbbbbbbbbbbbbbb"
        app:layout_constraintTop_toBottomOf="@+id/a" />
​
    <android.support.v7.widget.AppCompatButton
        android:id="@+id/c"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="c"
        app:layout_constraintLeft_toRightOf="@+id/barrier" />
​
    <android.support.constraint.Barrier
        android:id="@+id/barrier"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:barrierDirection="right"
        app:constraint_referenced_ids="a,b" />

显而易见,你可以把他看做一个容器constraint_referenced_ids=控件id,然后把这些控件看做一个整体

8. Group

它和Barrier有异曲同工之处,相同的都是你可以把他们看做一个容器,不同的是他是控制整个容器之中的所有的控件的可见或者不可见,比如android:visibility="gone",那它所包裹的左右控件都会gone。

当然ConstraintLayout的Api不止这些,需要我们真真切切的去使用它,你会发现它真的很好用~

参考

Android开发文档 Developer

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于全网最详细的VSCode教程,以下是一个简短的描述: 全网最详细的VSCode教程应该包含以下内容:基本介绍、安装和设置、编辑器布局、常用快捷键、实用插件和扩展、调试功能、版本控制、代码片段等。 在基本介绍部分,应该详细介绍VSCode是什么,它的优点和特点,如何下载和安装等。 安装和设置部分应该涵盖不同操作系统上的安装步骤和注意事项。同时,还应该介绍不同配置选项,如主题、字体、缩进设置等。 编辑器布局部分应该解释各个面板和视图的作用,如侧边栏、编辑窗口、终端等。详细说明如何调整布局以优化工作流程。 常用快捷键部分应该列举常用的快捷键和相关操作,如快速打开文件、搜索、查看定义等。应该对不同功能区分操作系统进行说明。 实用插件和扩展部分应该介绍一些常见和有用的插件,如代码片段、代码格式化、调试器等。应该详细解释如何安装和使用这些插件。 调试功能部分应该详细介绍如何配置和使用调试器,包括设置断点、查看变量的值等。 版本控制部分应该介绍如何使用内置的版本控制工具,如Git,如何提交、推送和拉取代码等。 最后,代码片段部分应该教授如何创建和使用代码片段,以提高编码效率。 以上仅是对全网最详细的VSCode教程的一些简要描述。当然,真正最详细的教程可能比这个更加全面和详细,具体内容可能还包括更多高级功能和技巧。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值