9. 【Android/Kotlin】動的にViewを追加

#はじめに
DreamHanksのMOONです。

前回は`WebView`というViewについて説明しました。
[8. 【Android/Kotlin】ウェブビュー（WebView）](https://qiita.com/DreamHanks/items/25a41d79d8a58db11f80)

今回は動的にViewを追加する方法について説明していきます。

#動的に追加の意味
以前まではViewやレイアウトを追加するためにレイアウトのxmlファイルに追加しましたが、
その方法は静的に追加する方法です。

例）チャットアプリで会話内容が追加されると、画面上にテキストを追加しなければならない状況があります。

動的にViewを追加する方法はActivityからViewを追加することです。

今回はテキストを入力し、そのテキストを画面上に動的に追加して表示していきます。

#ActivityからViewを追加
・レイアウトのxmlを作成

![1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/708649/7dc82fe6-fc6e-121e-c662-77618bec588a.png)


```xml:activity_addview.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".AddTextViewActivity"
    android:gravity="center">

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/text_et"
        android:inputType="text"
        android:hint="テキストを入力してください。"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/add_btn"
        android:text="追加"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/text_ll"
        android:orientation="vertical"/>

</LinearLayout>
```

xmlには空レイアウトをボタン下に追加します。

・Activityを作成

```kotlin:AddTextViewActivity.kt
package com.example.practiceapplication

import android.app.AlertDialog
import android.content.DialogInterface
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log.d
import android.view.ContextThemeWrapper
import android.widget.*
import kotlinx.android.synthetic.main.activity_listview.*
import javax.xml.validation.Validator

class AddTextViewActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_addview)

        val text_et = findViewById<EditText>(R.id.text_et)              //EditText（入力エリア）
        val add_btn = findViewById<Button>(R.id.add_btn)                //追加ンボタン

        val text_ll = findViewById<LinearLayout>(R.id.text_ll)          //空LinearLayout

        //追加ボタンのクリックイベントを設定
        add_btn.setOnClickListener {
            //テキストビューを生成
            val textView = TextView(this)
            
            //生成されたテキストに入力されたテキストを代入
            textView.text = text_et.text.toString()

            //テキストビューのサイズを修正
            textView.textSize = 15f

            //ボタン下の空LinearLayoutにテキストビューを追加
            text_ll.addView(textView)
        }

    }

}
```

#アプリ起動
・初期の画面
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/708649/93b4c266-e829-7552-657e-472683eaf914.jpeg" width=50%>

・`こんにちは`を入力してボタンをクリックした場合
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/708649/67e276a7-5c21-882a-7013-7e0d5ff12ec4.jpeg" width=50%>

・`よろしくお願いします。`まで入力してボタンをクリックした場合
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/708649/7de22e35-4f75-180c-a9de-4486a7aeaff6.jpeg" width=50%>

#終わりに
今回は`動的にViewを追加する方法について説明しました。

次回はライブラリを追加する方法について説明します。
[10. 【Android/Kotlin】ライブラリを追加](https://qiita.com/DreamHanks/items/b0326a6ede9c801a7137)

最新内容については下記のリンク（DreamHanksのブログ）で確認することができます。
[DreamHanksブログ（Android/Kotlinアプリ開発）](http://blog.dreamhanks.com/android-kotlin%e3%82%a2%e3%83%97%e3%83%aa%e9%96%8b%e7%99%ba/)