Androidプログラミング

【Android】Kotlinで動的にUIを追加する方法

androidで動的にUIを追加する記事のアイキャッチ Android

今回はAndroidアプリにおいて、コード側(Kotlin)からUIを動的に追加する方法を紹介します。ただ追加するだけなら簡単です。

スポンサーリンク

AndroidでKotlinから動的にUIを追加する方法

やり方は他にもあるかもしれませんが、今回は以下の順序でやってみました。

  1. XMLに親となるレイアウト(LinearLayoutやConstraintLayoutなど)を配置
  2. Kotlin側で動的に追加する子要素を生成
  3. 作成した子要素を親要素に追加

コード側から親レイアウトを特定するためにIDを設定してください。

スポンサーリンク

Kotlinから動的にUIを追加するサンプル

まっさらなLinearLayoutに要素を追加するサンプルを以下2種類作成しました。
(XMLは共通です)

  • TextXiew(単体)を追加
  • 子要素を持つLinerLayoutを追加

XMLのサンプル

親レイアウトになるLinearLayoutを記載します。
IDを割り振ることを忘れずに。

<!--レイアウトを追加するUI-->
<LinearLayout
    android:id="@+id/ll1"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:layout_margin="10dp"
    android:background="#eeeeee" />

TextViewを動的に追加する

以下のようなTextViewが追加されます。

androidで動的にUIを追加したサンプル画像1
背景黄色のTextViewが追加された様子

Kotlinは以下コードになります。

private fun addUI1(){

    // 追加するTextViewを生成
    var newTextView = TextView(applicationContext)
    newTextView.text="追加されたUIです"
    newTextView.setBackgroundColor(Color.rgb(255,255,0))

    //LinearLayoutに追加
    binding.ll1.addView(newTextView)
}

LinearLayoutを動的に追加する

以下のような要素が追加されます。

androidで動的にUIを追加したサンプル画像2
LinearLayoutが追加された様子

「ButtonとTextViewを含むLinearLayout」が追加されます。

Kotlinは以下コードになります。

private fun addUI2(){

    // 中身のButtonを生成
    var newBtn = Button(applicationContext)
    newBtn.text = "追加されたボタン"

    // 中身のTextViewを生成
    var newTextView = TextView(applicationContext)
    newTextView.text="0"
    newTextView.setBackgroundColor(Color.rgb(255,255,0))
    newTextView.gravity = Gravity.CENTER

    // 追加するLinearLayoutを生成
    var newll = LinearLayout(applicationContext)
    newll.orientation=LinearLayout.VERTICAL
    newll.addView(newBtn)
    newll.addView(newTextView)


    //GUI(XML)のLinearLayoutに追加
    binding.ll1.addView(newll)
}
スポンサーリンク

さいごに

今回は動的にUIを追加する方法を紹介しました。

個人的には必要になったときに必要数追加する用途が良いかと思います。
スマホ画面は狭いので、使用していないUI(=今必要ないUI)はなるべく表示したくないので。

以下関連記事。動的にUIが変化するアニメーションとは相性が良いかもしれません。

コメント

タイトルとURLをコピーしました