当前位置:   article > 正文

Android ConstraintLayout app:layout_constraintHorizontal_bias详解

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;

示意图如下:

  1.  <TextView
  2.         android:id="@+id/main_tv_print_get_res"
  3.         android:layout_width="0dp"
  4.         android:layout_height="0dp"
  5.         android:text="Show get response here"
  6.         android:background="@color/tv_res"
  7.         app:layout_constraintDimensionRatio="h,157:98"
  8.         app:layout_constraintWidth_percent="0.5"
  9.         app:layout_constraintHorizontal_bias="0.8"
  10.         app:layout_constraintLeft_toLeftOf="parent"
  11.         app:layout_constraintRight_toRightOf="parent"
  12.         app:layout_constraintTop_toTopOf="parent"
  13.         android:textSize="20sp"
  14.         android:layout_marginTop="10dp"
  15.         android:gravity="center"
  16.         />

 

情景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

示意图如下:

  1. <TextView
  2.         android:id="@+id/main_tv_print_get_res"
  3.         android:layout_width="0dp"
  4.         android:layout_height="0dp"
  5.         android:text="Show get response here"
  6.         android:background="@color/tv_res"
  7.         app:layout_constraintDimensionRatio="h,157:98"
  8.         app:layout_constraintWidth_percent="0.5"
  9.         app:layout_constraintHorizontal_bias="0.8"
  10.         app:layout_constraintLeft_toRightOf="parent"
  11.         app:layout_constraintRight_toLeftOf="parent"
  12.         app:layout_constraintTop_toTopOf="parent"
  13.         android:textSize="20sp"
  14.         android:layout_marginTop="10dp"
  15.         android:gravity="center"
  16.         />


总结:

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/225646
推荐阅读
相关标签
  

闽ICP备14008679号