MarginLayoutParamsの正しい使い方
2018-03-26 22:14:06 +0900 JST
Categories: Android
久々に技術ネタ。
Androidでレイアウト組む時は基本XMLなのでプログラムから作成することはほとんどないと思うのですが、プログラム側からmarginを指定するときにこの MarginLayoutParams
を使用します。
MarginLayoutParams
はLayoutParamsを継承しているのでそのまま他のViewのLayoutParamsにも渡せますが、古いAndroid(5系とか)ではこれが通用しません。
val marginParams = MarginLayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT).apply {
topMargin = 100
}
addView(view, marginParams)
ではどうやるかというと、addViewするViewGroupのLayoutParamsにMarginLayoutParamsを渡してあげるのです。
addViewする対象がFrameLayoutの場合はFrameLayout.LayoutParamsのコンストラクタに渡しましょう。
val marginParams = MarginLayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT).apply {
topMargin = 100
}
val params = FrameLayout.LayoutParams(marginParams)
addView(view, params)
追記(2018-03-31T13:58:06+41:00)
FrameLayoutParamsはMarginLayoutParamsを継承しているので、わざわざMarginLayoutParamsから作る必要はなかった。
val params = FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT).apply {
topMargin = 100
}