社内se × プログラマ × ビッグデータ

プログラミングなどITに興味があります。

Android textView を動的に追加 (kotlin)

表記のとおり、textView を動的に追加するコードを試してみました。
静的に追加するなら、xml に記述すればOKです。
動的に追加する場合、textView のインスタンスを生成し、それをレイアウトに追加します。
例として、2つの TextView を作成し、レイアウトに追加してみました。

// TextView の配列(サイズ2)を作っています
val texts: Array<TextView?> = arrayOfNulls(2)

// FrameLayout のインスタンスを取得しています
// textsWindow は予めレイアウトファイル(.xml)に定義したものです
val layout: FrameLayout = findViewById(R.id.textsWindow)

// それぞれのTextView に設定を行い、FrameLayout のインスタンスに追加しています
// 今回はそれぞれのテキストが重なってもOKなように、FrameLayout を使っています
// 特に制約がなければ、LinearLayout などでも構いません
for (i in 0..1){
  texts[i] = TextView(this)
  texts[i]?.text = "test text"
  texts[i]?.setTextColor(Color.WHITE)
  texts[i]?.x = 400.0f
  texts[i]?.y = 400.0f * (i + 1)
  layout.addView( texts[i], LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, 50))
}

変数名や値は適当です。
画面は掲載していませんが、定義したテキスト("test text")が表示されることが確認できました。

感想
TextView の配置位置が予め決まっていて、表示・非表示の切り替えのみしたい
> visibility だけで対応できそう。
ユーザーの操作に合わせて、TextView を色んな位置に表示させたい
> 今回のように動的に追加すれば対応できそう。