##何の記事?
Activityの表示内容を表示するたびに書き換えたい。
そんなときにkotlin上でviewを生成して追加する方法を紹介します。
やり方自体はjavaでも同様にできるはずです。
##具体的な方法
ここでは、LinearLayoutにviewを追加していく例で説明します。
まずは外側のLinearLayoutを用意します。
sample_activity.xml
<LinearLayout
android:id="@+id/sampleLinear"
android:layout_width="wrap_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
</LinearLayout>
このLinearLayoutの中にviewを追加していきます。
idはsampleLinear
です。
まずはsampleLinear
のインスタンスを取得します。
ここでは、EditTextを追加してみようと思います。
SampleActivity.kt
val wrapContent = ViewGroup.LayoutParams.WRAP_CONTENT
val linearLayout = view.findViewById<LinearLayout>(R.id.sampleLinear)
val editText = EditText(applicationContext)
linearLayout.addView(edit, LinearLayout.LayoutParams(wrapContent,wrapContent))
これで、以下と同じものが追加できたことになります。
<EditText
android:width="wrap_content"
android:height="wrap_content" />
viewに他のパラメータを設定したいときは、取得したviewのインスタンスにそれらを追加することができます。
以下では、複数行入力を可能にするEditTextのパラメータを設定しています。
SampleActivity.kt
val editText = EditText(applicationContext)
editText.setRawInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE)
Buttonを実装し、onClickListener内でこれを実装すると、
ボタンを押すたびにviewが追加される画面を作ることができます。
SampleActivity.kt
val addButton = Button(mContext)
addButton.setOnClickListener {
val editText = EditText(applicationContext)
linearLayout.addView(editText, LinearLayout.LayoutParams(MP,WC))
}