Android ConstraintLayout app:layout_constraintHorizontal_bias详解

想必大家都对Google新贵ConstrainLayout的使用爱不释手。今天在使用app:layout_constraintHorizontal_bias属性的时候遇到点小疑问,研究了一会儿才知晓bias值的意义:即bias值=子View左相关的长度/(子View左相关的长度+其右相关的长度),默认值为0.5。在此记录并分享以下两种示例:

假设子view的宽度是父布局的1/2,父布局的宽度视作 1 .

情景1:

如下代码,约束子View的左边与父布局的左边相关,约束子View的右边与父布局的右边相关,则此时左相关的长度为1/4、右相关的长度为1/4 。

现把bias从0.5改为0.8,由公式可以看出,bias值与左相关的长度是成正比的,增大bias值,由于子View的左边与父View的左边相关,则此时子View整体会往右偏移。容易计算:

左相关长度/右相关长度=0.8/0.2=4.

因此,容易计算出0.5-->0.8时,子View往右的偏移量为 :3/20;

左边的空白区域占屏幕的2/5,右边的空白区域占屏幕的1/10;

示意图如下:

 

Android ConstraintLayout app:layout_constraintHorizontal_bias详解_第1张图片

 

情景2:

如下代码,约束子View的左边与父布局的右边相关,约束子View的右边与父布局的左边相关,则此时左相关的长度为3/4、右相关的长度为3/4 。

现把bias从0.5改为0.8,由公式可以看出,bias值与左相关的长度是成正比的,增大bias值,由于子View的左边与父View的右边相关,则此时子View整体会往左偏移。容易计算:

左相关长度/右相关长度=0.8/0.2=4.

因此,容易计算出0.5-->0.8时,子View往左的偏移量为 :9/20;

此时子View的左边已经偏离屏幕:|1/4-9/20|=1/5

示意图如下:

Android ConstraintLayout app:layout_constraintHorizontal_bias详解_第2张图片

总结:

1.bias值=子View左相关的长度/(子View左相关的长度+其右相关的长度)

2. 由公式可以看出,bias值与左相关的长度是成正比的,增大bias值,子View的左相关总是随之增长。至于控件具体往左往右移动,则视子View与关联控件的哪边相关。

 

 

你可能感兴趣的:(Android ConstraintLayout app:layout_constraintHorizontal_bias详解)