有没有办法将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的大小
答案 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
中,您可以叠加它们。