[Android/Kotiln]動的に子要素を追加する

レイアウトに対して動的に別のレイアウトを追加する方法のメモ

ソースコード


getLayoutInflater().inflate(resource, viewGroup)
viewGroup.getChildAt(index)

子コンポーネントの追加

追加時にはinflateを使用して追加していく。
resourceはR値、viewGroupにはfindViewByIdなどで取得したコンポーネントを指定する。

inflateの戻り値は追加元のview

またViewGroupをnull指定した場合は自身のviewが戻されるが、addViewでGroupViewに追加が必要になる

追加したコンポーネントを操作

親のコンポーネントの子要素を取得するgetChildAtメソッドを使って追加コンポーネントを取得し操作する
ただし、特定のコンポーネントに対して操作する場合はas キーワードなどを使用してキャストする必要がある

 

ViewGroupとViewの関係

ViewGroupはViewのサブクラス(子)です。

振る舞いとしてはディレクトリとファイル、コンテナとコンポーネントのような感じです。

ディレクトリにはもちろんファイルを配置できますし、子ディレクトリを入れることもできます。

ViewGroupも同じで、Viewを配置することはもちろん、子ViewGroupを入れることもできます。

ただし、上位にある関数などの戻り値でViewGroupがView(親クラス)として返ってくる場合に

ViewGroupとして振る舞いたい場合はもちろんキャストが必要。

 

 

あわせて読みたい