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 を色んな位置に表示させたい
> 今回のように動的に追加すれば対応できそう。