GridLayoutに動的にImageViewを生成して割り当てる(Android Studio 3.0.1、Kotlin)
等間隔のグリッド上にViewを配置できるLayoutとして、GridLayoutがあります。
GridLayoutに対して静的に要素を割り当てる方法(xmlに直接記入する方法)はWeb上で多く紹介されていましたが、動的に生成して割り当てる方法がわかりづらかったのでまとめます。
動的割り当て方法
以下のようにして、動的にImageViewを生成して割り当てることができます(GridLayoutのIDはtestGridLayout)。
for(i in 0..(testGridLayout.rowCount - 1)) { for(j in 0..(testGridLayout.columnCount - 1)) { // ImageViewの生成 val imgview = ImageView(this) // GridLayout用のパラメータを設定 val params = GridLayout.LayoutParams() params.width = 256 params.height = 256 params.rowSpec = GridLayout.spec(i) params.columnSpec = GridLayout.spec(j) imgview.setLayoutParams(params) // ImageViewへ画像を設定 imgview.setImageResource(R.drawable.smartphone_app) // GridLayoutへImageViewを割り当て testGridLayout.addView(imgview) } }
ポイントは、paramsというパラメータを設定するための変数を生成して、ImageViewに与えている点です。
実行結果
4*5のGridLayoutに動的割り当てを行った結果を示します。
生成できています。