Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

何の記事?

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))
    }

asukahime1021
2018/5月にプログラマーに転職
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away