最近几个月终于有大把时间总结这两年来所学,荣幸之至 2019.5.22
继续ConstraintLayout 基础入门(一)
本章节对应内容的练手项目
本文包含2.1-2.6的内容
####2.2 constrainedWidth TextView 或者其他View内容有时候可能会超过约束范围。需要使用layout_constrainedWidth和layout_constrainedHeight,两个属性的默认值均为false。 文字过多的时候,就像下面这个样子
我们对右侧的TextView的设置是在ImageView的右侧,但是我们可以看到文字已经超出了约束范围,把ImageView盖住了。我用橙色把两边超出来的部分圈出来了,可以看到,两边是对称的,所以,有一部分文字还显示在了屏幕外面。 注意:这里说的是约束范围,不是规定范围,如果你把TextView的width和height写成固定值,无论文字有多少都是不会超出范围的。
layout_constrainedWidth表示不让宽度超出约束范围,文本如果超出了以后,就会自动换行 layout_constrainedHeight 表示不让高度超出约束范围,文本如果超出了以后,会直接截断 两个的默认值均为false。
在上面的TextView属性中加上app:layout_constrainedWidth="true"以后,就可以得到想要的效果了。
bias英文是偏心,偏向的意思 也是有水平和垂直两个方向 layout_constraintHorizontal_bias layout_constraintVertical_bias 取值范围是 0.0 – 1.0 默认值是0.5[就是不设置的时候,控件会放置与两方约束的正中间]。
这个很好理解,举个例子 给一个水平垂直方向均居中的View,加入app:layout_constraintVertical_bias="0.2"后,就会在垂直方向重新开始分配权重。上面说了,layout_constraintVertical_bias默认值是0.5,所以我们不写的话,垂直方向就是Top和Bottom各一半儿。改成0.2以后,就会变成这样子。
app:layout_constraintVertical_chainStyle
约束链的使用场景是需要将两个以上的View打包的时候[类似于一层布局嵌套]
layout_constraintVertical_chainStyle有三个取值,分别是 packet、spread、spread_inside,默认值是 spread,我们如果用这个属性的话,基本上都是用packet
packet:表示内部全部打包
使用packet时,如果需要间距,就加上 layout_marginTop 之类的属性
spread 表示分散,这个值是默认值,和没写一样
spread_inside 表示内部分散,他会均匀分布在约束的内部,顶部和底部分别挨着top和bottom
宽高比是指,View的宽和高保持固定的比例。需要修改下面两个参数:
width或者height为 0dp [match_constraint]app:layout_constraintDimensionRatio="比值" 如果width和height都是0dp,那么就有一个是铺满的,另一个按照比例缩放高:宽 = 2:1 android:layout_width="0dp" android:layout_height="wrap_content" ... app:layout_constraintDimensionRatio="1:2"
宽:高 = 2:1 android:layout_width="0dp" android:layout_height="wrap_content" ... app:layout_constraintDimensionRatio="2:1"
宽:高 = 2:1[width height均为0dp] android:layout_width="0dp" android:layout_height="0dp" ... app:layout_constraintDimensionRatio="2:1"
三种情况结果如下图:
百分比布局,指height 或height占parent的百分比
对应width或者height的值为0dp[match_constraint]设置 app:layout_constraintWidth_percent="percent"或app:layout_constraintHeight_percent="percent"。percent取值范围为0-1比如我们对一个View设置了: ... android:layout_width="0dp" app:layout_constraintWidth_percent="0.77" ... 效果就是:
接着上面的百分比布局,上面说道的百分比布局,除了直接使用layout_constraintWidth_percent的方式以外,常用的方式还有使用GuideLine。
GuideLine[辅助线]分垂直方向「vertical」和水平方向「Horizontal」 我们设置好了辅助线以后,就可以以辅助线为约束条件,完成百分比布局.
使用方式
<android.support.constraint.Guideline android:id="@+id/guideline" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" app:layout_constraintGuide_percent="0.35" /> android:orientation=表示方向,取值vertical或horizontalapp:layout_constraintGuide_percent="0.35"表示百分比的方向另外,辅助线的位置也可以通过 layout_constraintGuide_end layout_constraintGuide_begin 分别表示从parent的End和Start处移动的长度百分比也可以支持负数,这个时候,会跑到屏幕外面去,有的时候会用到。借助百分比布局,可以很容易实现下面这个论文简版首页的布局。
加上本小节,一共用了11小节将ConstraintLayout的使用,这个界面就不做分析去写了,可以下来实现一下。另外,为了避免看文章枯燥,我准备了一个练手项目,看完以后可以下载下来练习练习。
再另外,以上都是自己平时所学整理,如果有错误,欢迎留言或者添加微信批评指出,一起学习,共同进步,爱生活,爱技术。
