4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Androidでコードからviewを追加する

Posted at

##何の記事?
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))
    }

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?