[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として振る舞いたい場合はもちろんキャストが必要。