让他的兄弟姐妹的孩子身高更新高度

时间:2017-11-16 13:28:22

标签: android android-layout

有没有办法将childHeight定义为比其兄弟姐妹更重要,并将其大小传播给(不太重要的)兄弟姐妹。

考虑这个布局

<RelativeLayout
  match_parent,match_parent>

    <FrameLayout 
      match_parent,match_parent>

        <ViewA
          this view size is important and its siblings should have same size, set on Runtime.
          layout_gravity="center"/>

        <ViewB
          match_parent,match_parent
          layout_gravity="center"
          (should have the size of ViewB)  />

    </FrameLayout>

</RelativeLayout>

我知道如何使用ConstrainLayout来实现它,但我只是出于好奇而要求

<ConstraintLayout>
      <ViewA
       wrap_content,wrap_content
       constraint_to="parent"/>

       <ViewB
          0dp,0dp
          constraint_to="ViewA"
          layout_gravity="center"
          (should have the size of ViewA)  />
</ConstraintLayout>

用例 我有cameraView(ViewA)和cameraOverlay(ViewB)。 ViewA根据用户偏好(16:9 | 4:3 ...)更改大小,ViewB(有一些alpha)必须始终与整个ViewA 重叠。

编辑:忘记添加我不想手动更改viewB的大小

1 个答案:

答案 0 :(得分:1)

我了解您以编程方式更改viewA的高度/宽度。所以你有可用的高度和宽度资源。

对于有同样问题的其他人,设置视图的高度:

viewB.getLayoutParams().height = heightViewA;
viewB.getLayoutParams().width = widthViewB;

希望这有帮助。

重要。如果您在布局“布局”后设置了高度,请务必致电:

viewB.requestLayout() 

另一种选择是使用 RelativeLayout

<RelativeLayout
       wrap_content,wrap_content    
>
      <ViewA
       wrap_content,wrap_content
       constraint_to="parent"/>

       <ViewB
          match_parent,match_parent
          constraint_to="ViewA"
          layout_gravity="center"
          (should have the size of ViewA)  />
</RelativeLayout>

RelativeLayout中,您可以叠加它们。