====== コードでViewを追加する ======
===== LinearLayoutの場合 =====
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// setContentView(R.layout.activity_main) これはxmlからlayoutを取得するが、コードで作成したlyaoutからデザインwを作成する
// layoutを作成する
var layout=LinearLayout(this)
layout.orientation=LinearLayout.VERTICAL
layout.layoutParams =
LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT)
layout.gravity=Gravity.LEFT
// コードで作成したlayoutを設定する
setContentView(layout)
// コードでimageViewを作成する
var imagev = ImageView(this)
imagev.setImageResource(R.drawable.man)
val layoutParams = LinearLayout.LayoutParams(300,300)
imagev.layoutParams=layoutParams
// レイアウトにimageViewを追加する
layout.addView(imagev)
・・・
===== ConstraintLayoutの場合 =====
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
//setContentView(R.layout.activity_main) デフォルトのsetContentViewは使わない
// ConstraintLayoutを作る
var layout=ConstraintLayout(this)
layout.layoutParams = ConstraintLayout.LayoutParams(ConstraintLayout.LayoutParams.MATCH_PARENT,ConstraintLayout.LayoutParams.MATCH_PARENT)
// セットする
setContentView(layout)
// 追加したいViewを作る
var imagev = ImageView(this)
imagev.setImageResource(R.drawable.man)
imagev.id = View.generateViewId() // idを設定する
layout.addView(imagev) // ConstraintLayoutに追加したViewを追加する
// constraintSet を使ってViewの位置を調整する
var constraintSet = ConstraintSet()
constraintSet.clone(layout)
// android:layout_width="wrap_content"
constraintSet.constrainWidth(imagev.id,ConstraintSet.WRAP_CONTENT)
//android:layout_height="wrap_content"
constraintSet.constrainHeight(imagev.id,ConstraintSet.WRAP_CONTENT)
// app:layout_constraintBottom_toBottomOf="parent"
constraintSet.connect(
imagev.id,
ConstraintSet.BOTTOM,
ConstraintSet.PARENT_ID,
ConstraintSet.BOTTOM,
0)
constraintSet.connect(
imagev.id,
ConstraintSet.TOP,
ConstraintSet.PARENT_ID,
ConstraintSet.TOP,
0)
constraintSet.connect(
imagev.id,
ConstraintSet.RIGHT,
ConstraintSet.PARENT_ID,
ConstraintSet.RIGHT,
0
)
constraintSet.connect(
imagev.id,
ConstraintSet.LEFT,
ConstraintSet.PARENT_ID,
ConstraintSet.LEFT,
0
)
constraintSet.constrainWidth(
imagev.id,
500
)
constraintSet.constrainHeight(
imagev.id,
500
)
// constraintSetを適用する
constraintSet.applyTo(layout)