LinearLayout设置gravity不生效

最近在学习Transition动画的时候,有个动画是将button从左上移到右下,代码其实很简单。

1
2
3
4
TransitionManager.beginDelayedTransition(transitionContainer, ChangeBounds().setPathMotion(ArcMotion()).setDuration(1000))
var params = button_view.layoutParams as FrameLayout.LayoutParams
params.gravity = Gravity.BOTTOM or Gravity.RIGHT
button_view.layoutParams = params

这边使用的是FrameLayout,最开始使用LinearLayout的时候修改gravity始终无效。后来意识到因为LinearLayout是或横向或纵向的布局,因此如果当它处于横向的情况时,只有top和bottom是有效的,因为横向的布局都依赖于子控件的个数。反之如果是纵向布局,只有right和left是有效的。