- 浏览: 69422 次
- 性别:
- 来自: 北京
最新评论
ConstaintLayout的初次使用总结
转载请注明出处:[url] http://renyuan-1991.iteye.com/blog/2304152[/url]
最近google I/O大会上带来7.0的一些新的东西,而我们开发最关注的可能就是Adroid Studio2.2和ConstraintLayout这个依赖的约束库了。
当我们需要用到这个布局的时候我们要准备好2.2以上版本的AS,
然后在项目中添加依赖:
新增属性:
上面这两个属性用于指定控件的绝对位置。通过这个属性指定位置的控件可以不需要约束关系。
以上四个属性用来指定控件相对于任何其他单位的约束关系(约束对象可以是父控件,可以是同级的其他控件)。如果不指定绝对位置也不指定约束条件那么运行后这个控件就会被放置在默认的起始位置即父控件的左上角相对于父控件坐标为(0,0)地方。以上的四个属性是成对出现的,即同一个方向上的两个约束必须成对出现。也就是说,当我们指定layout_constraintBottom_toBottomOf的时候必须要指定layout_constraintTop_toTopOf才会生效,而这个时候该控件的位置才会用layout_constraintVertical_bias这个属性来描述。屏幕的高度减去该控件的高度再减去该控件的margintop和marginbottom剩余的高度我们用100%表示,那么layout_constraintVertical_bias的值表示的就是该控件上边的外边距占剩余高度的比例。
上图中的波浪线A部分加上B部分
就是100%暂且称为波浪线总长度吧。那么layout_constraintVertical_bias就表示A部分占据波浪线总长度的比例。图中的波浪线并没有到达屏幕边缘,距离上边缘72dp距离下边缘16dp。计算比例是在去掉margin之后的剩余空间进行的,与margin无关。水平方向的同理。
以上几个属性主要是控件与控件之间的约束,规则同上。
app:layout_constraintBaseline_toBaselineOf:让控件的基线对其
TextView这种控件就算我们用Wrap_content文字也不会紧贴控件边缘,两个不同字体大小的textview就可以用这个基线进行约束对其。
这几个约束比较特殊,我们可以理解为这几个属性是用来给控件指定起始位置的,之后的margin是在这个值的基础上进行偏移的。如下图:
以上两个属性,顾名思义就是在X轴或者Y轴方向上中心对其,同样,这个属性的优先级是高于margin的。指定这个值后margin值指定的位置后再次偏移。这个时候一旦拖动控件就会生成leftToright这样的属性,生成这种属性后centertocenter就没什么作用了。
如果需要让控件的宽高以固定的比例展示可以用constraintDimensionRatio来制定(如:app:layout_constraintDimensionRatio="1:3"表示宽高比为1:3)这个属性生效需要以下条件:
* left ,right ,top ,bottom四条边都需要约束,bottom的约束可以用baseline代替。
* 宽高至少有一个是0dp或者-1dp,如果都是0dp的则会以父布局能容下的最大范围显示。
参考线
我们可以再布局中添加水平或垂直的两种参考线Guideline。接下来的三个属性就只能用在Guideline上。
前面三个属性只需要任意一个就能确定参考线的位置。orientation用来指定参考线是水平还是垂直。relativePercent是一百分比的形式表示参考线所处的位置。relativeBegin和RelativeEnd分别表示距离起点和终点的距离(水平和垂直方向的分别一屏幕顶端和底端、屏幕左边和右边表示起点和终点)
说明
在ConstraintLayout的子布局中如果有ViewGroup类型的控件(如:相对布局,线性布局)这类控件的子空间不能使用约束的属性。而且该布局不能拖动(AS2.2预览版).
转载请注明出处:[url] http://renyuan-1991.iteye.com/blog/2304152[/url]
希望爱好编程的小伙伴能加这个群,互相帮助,共同学习。群号: 141877583
转载请注明出处:[url] http://renyuan-1991.iteye.com/blog/2304152[/url]
最近google I/O大会上带来7.0的一些新的东西,而我们开发最关注的可能就是Adroid Studio2.2和ConstraintLayout这个依赖的约束库了。
当我们需要用到这个布局的时候我们要准备好2.2以上版本的AS,
然后在项目中添加依赖:
dependencies { compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha1' }
新增属性:
app:layout_editor_absoluteX app:layout_editor_absoluteY
上面这两个属性用于指定控件的绝对位置。通过这个属性指定位置的控件可以不需要约束关系。
app:layout_constraintBottom_toBottomOf="@+id/activity_main" app:layout_constraintLeft_toLeftOf="@+id/activity_main" app:layout_constraintRight_toRightOf="@+id/activity_main" app:layout_constraintTop_toTopOf="@+id/activity_main"
以上四个属性用来指定控件相对于任何其他单位的约束关系(约束对象可以是父控件,可以是同级的其他控件)。如果不指定绝对位置也不指定约束条件那么运行后这个控件就会被放置在默认的起始位置即父控件的左上角相对于父控件坐标为(0,0)地方。以上的四个属性是成对出现的,即同一个方向上的两个约束必须成对出现。也就是说,当我们指定layout_constraintBottom_toBottomOf的时候必须要指定layout_constraintTop_toTopOf才会生效,而这个时候该控件的位置才会用layout_constraintVertical_bias这个属性来描述。屏幕的高度减去该控件的高度再减去该控件的margintop和marginbottom剩余的高度我们用100%表示,那么layout_constraintVertical_bias的值表示的就是该控件上边的外边距占剩余高度的比例。
上图中的波浪线A部分加上B部分
就是100%暂且称为波浪线总长度吧。那么layout_constraintVertical_bias就表示A部分占据波浪线总长度的比例。图中的波浪线并没有到达屏幕边缘,距离上边缘72dp距离下边缘16dp。计算比例是在去掉margin之后的剩余空间进行的,与margin无关。水平方向的同理。
app:layout_constraintLeft_toRightOf <!--本控件的左边参照约束控件的右边--> app:layout_constraintRight_toLeftOf <!--本控件的右边参照约束控件的左边--> app:layout_constraintTop_toBottomOf <!--本控件的上边参照约束控件的下边--> app:layout_constraintBottom_toTopOf <!--本控件的下边参照约束控件的上边-->
以上几个属性主要是控件与控件之间的约束,规则同上。
app:layout_constraintBaseline_toBaselineOf:让控件的基线对其
TextView这种控件就算我们用Wrap_content文字也不会紧贴控件边缘,两个不同字体大小的textview就可以用这个基线进行约束对其。
app:layout_constraintStart_toStartOf app:layout_constraintEnd_toEndOf app:layout_constraintStart_toEndOf app:layout_constraintEnd_toStartOf
这几个约束比较特殊,我们可以理解为这几个属性是用来给控件指定起始位置的,之后的margin是在这个值的基础上进行偏移的。如下图:
app:layout_constraintCenterX_toCenterX app:layout_constraintCenterY_toCenterY
以上两个属性,顾名思义就是在X轴或者Y轴方向上中心对其,同样,这个属性的优先级是高于margin的。指定这个值后margin值指定的位置后再次偏移。这个时候一旦拖动控件就会生成leftToright这样的属性,生成这种属性后centertocenter就没什么作用了。
如果需要让控件的宽高以固定的比例展示可以用constraintDimensionRatio来制定(如:app:layout_constraintDimensionRatio="1:3"表示宽高比为1:3)这个属性生效需要以下条件:
* left ,right ,top ,bottom四条边都需要约束,bottom的约束可以用baseline代替。
* 宽高至少有一个是0dp或者-1dp,如果都是0dp的则会以父布局能容下的最大范围显示。
参考线
我们可以再布局中添加水平或垂直的两种参考线Guideline。接下来的三个属性就只能用在Guideline上。
app:relativePercent app:relativeBegin app:relativeEnd app:orientation
前面三个属性只需要任意一个就能确定参考线的位置。orientation用来指定参考线是水平还是垂直。relativePercent是一百分比的形式表示参考线所处的位置。relativeBegin和RelativeEnd分别表示距离起点和终点的距离(水平和垂直方向的分别一屏幕顶端和底端、屏幕左边和右边表示起点和终点)
说明
在ConstraintLayout的子布局中如果有ViewGroup类型的控件(如:相对布局,线性布局)这类控件的子空间不能使用约束的属性。而且该布局不能拖动(AS2.2预览版).
转载请注明出处:[url] http://renyuan-1991.iteye.com/blog/2304152[/url]
希望爱好编程的小伙伴能加这个群,互相帮助,共同学习。群号: 141877583
发表评论
-
通过Url打开app页面并传递参数
2017-12-09 17:56 3924转载请注明出处:http:// ... -
Retrofit+RxJava搭建网络请求和数据解析框架
2017-06-29 18:20 0好久没写博客了,实话说,这一年相比往年可以说没什么进步,工作四 ... -
viewpager指示器
2016-11-08 16:04 0viewpager指示器 实现该需求的几种方法的基本原理和缺点 ... -
Android Studio模板,省去界面重复部分的开发
2016-07-06 16:05 0Android Studio模板,省去界面重复部分的开发 -
android studio 运行java代码
2016-06-21 17:50 2380转载请注明出处: http://renyuan-1991.it ... -
自定义组合控件的总结
2016-06-21 16:27 1496自定义组合控件的总结 转载请注明出处:http://renyu ... -
只显示年月的DatePicker
2016-06-12 17:30 3300转载请注明出处:http://renyuan-1991.ite ... -
Android遮罩层引导页的实现
2016-06-03 16:28 0实现遮罩层引导页可以通过以下几种方式,本文主要记录张洪洋Hig ... -
手势密码
2016-05-24 14:52 0我们公司做的是理财产品,所以手势密码这个东西少不了,在写手势密 ... -
线性布局的权重weight使用详解
2016-01-20 14:29 2364对线性布局中权重的理解 转载请注明出处:http://ren ... -
setBackgroundResource导致Padding失效,settextsize
2016-01-18 19:50 1535通过setBackground设置9 patc ... -
NestedScrolling的使用及ScrollView的惯性滑动
2015-12-08 18:14 21466NestedScrolling的使用及ScrollView的惯 ... -
android-async-http使用和取消请求
2015-10-15 12:06 4944android-async-http使用总结 下载最新的包可以 ... -
触摸屏幕取消键盘
2015-10-13 18:09 1547当点击文本框和发送按钮的时候不需要取消键盘,点击屏幕其他按钮或 ... -
四种方式实现ListView中的倒计时一()
2015-09-29 12:33 0的奋斗奋斗奋斗 -
SQLite详解
2015-10-10 15:07 1060概述 SQLite是D.Richar ... -
android 的屏幕适配问题,dp与px的换算
2015-08-08 19:11 1719在进入正题之前先了解 ... -
自定义ViewGroup实现动态创建可换行标签
2015-08-03 15:15 1149转载请注明:http://renyua ... -
Android第三方框架之xListView的使用方法
2014-11-09 19:18 5104==最近向用xListView实现刷新效果,在网上没有找到相关 ...
相关推荐
Android约束布局ConstraintLayout使用完全解析 Android约束布局ConstraintLayout使用完全解析
Android约束布局是Google于2016年Google IO 大会推出的新型布局,本PPT对其进行了介绍。
Android约束布局.docx
Android 约束布局示例 约束布局在2016年IO 谷歌大会早就提出来了,As 2.2早也就有了可以拖拽的拓展,现在As 都3.x了,我现在才来看这个布局也是尴尬。ConstraintLayout有效的解决了多层嵌套复杂布局的问题,加快渲染...
android demo,ConstraintLayout (约束布局),该demo详细的介绍了layout_constraint布局的所有属性。
ConstraintLayout(约束布局), 是2016年Google I/O最新推出的Android布局, 目前还在完善阶段. 从推出的力度而言, 应该会成为主流布局样式. 在最新版本的Android Studio中, ConstraintLayout已经成为默认布局.
android 防微信布局布局,希望可以帮到新手
Android xml布局文件工具
Android 相对布局实例 ,RalateLayout
Android Studio 在xml文件中设置界面布局1、xml文件中给输入框editText修改下划线颜色2、设置button按钮为圆角及修改按钮颜色3、运用约束布局时预览效果和运行效果不一致 写一写今天困扰我很久的问题:如何给...
Android源码下载,自定义的圆环ImageView、ViewPager的动画切换、流式布局 自定义的带圆环的ImageView; 2、ViewPager的切换动画; 3、流式布局。。
一个Android标签布局.zip,又一个android标签布局
Android UI 布局.ppt
AndroidXML布局属性详解,简介直接。。。值得一看哦
在2016年的Google I/O大会上 , Google 发布了Android Studio 2.2预览版,同时也发布了Android 新的布局方案 ConstraintLayout , 但是最近的一年也没有大规模的使用。2017年Google发布了 Android Studio 2.3 正式版...
android 布局生成图片,封装工具类 ,简单实用,viewgroup生成图片分享微信,快速转化
Android动态布局DynamicLayoutDemo
android开发人员设计软件时的布局文件,详细介绍了android的布局文件的用法。。。。。
This is a sample app demonstrating Youtube UX/UI animation using ConstraintLayout.It implements the Keyframe Animation feature in ConstrainLayout.This sample app is built on Android Architecture ...
Android自动布局换行,采用xml去声明,使用和线性布局一样。直接使用