【发布时间】:2017-12-01 09:03:38
【问题描述】:
我在FrameLayout里面创建了一个LinearLayout,LinearLayout需要在FrameLayout里面居中,但是LinearLayout的宽度需要改变如下: 如果父 FrameLayout 超过 650dp,则设置 LinearLayout 宽度为 650dp,这样会在线性布局的左右留下一些边距。
如果父 FrameLayout 小于 650dp,则设置 Lineralyout 宽度以匹配父。
父FrameLayout宽度会随着方向改变而改变,我尝试使用OnLayoutChangeListener、OnGlobalLayoutListener、OnAttachStateChangeListener来检测屏幕旋转后的宽度,但都不起作用。
通过尝试查找父视图的宽度,我是否走在正确的轨道上?
或者是否可以将父视图用作ConstraintLayout,并在可能的情况下使内部的LinearLayout符合650,并在宽度不够时扩展为父视图?
(注意我不能在sw600或sw600-land等不同布局资源文件夹下使用不同的值,因为父视图不一定占据整个屏幕,它可能只是屏幕上的两列之一)
【问题讨论】:
-
ConstraintLayout(不是CoordinatorLayout)的孩子可以指定app:layout_constraintWidth_max。