CommentViewを継承した独自のカスタムビュー内のレイアウトをxmlで定義することができる。レイアウトに関する事はJavaコードで書くよりもxmlで定義しておいたほうがコード量が減るし、後々メンテナンスしやすくなる。今回はこの方法について見ていく。サンプルアプリの完成形となる画面を示す。画面上部に表示された赤色の部分がカスタムビューとなっている。テキストビューとその下に3つボタンがあって、それぞれのボタンを押すとテキストビューに押したボタンのテキストが表示されるようになっている。このカスタムビューに適用するレイアウトxmlを示す。</LinearLayout></LinearLayout>このxmlを見ると分かるとおり、内容は通常ActivityのsetContentView()で渡しているxmlの形式と変わらない。次に、カスタムビューのJavaコード部分を示す。}}本来、カスタムビューはViewを継承すれば良いのだが、今回はLinearLayoutを継承している。これは、適用するxmlのトップレベルのViewがLinearLayoutだからで、その型を合わせる必要があるからである。サンプルではLinearLayoutを例として取り上げたが、ほかにもViewGroupの子クラスのFrameLayoutやRelativeLayoutなどが使える。19行目で、LayoutInflator#inflate()メソッドを使ってレイアウトxmlからViewを作っている。このメソッドの第2引数で、ルートとなるViewとして自分自身を指定する。することでレイアウトxmlの内容がカスタムビューに適用される。その後は、いつものActivity#onCreate()の中で行っている手順と同様、findViewById()メソッドで操作したいViewをレイアウトから取得できる。今回のサンプルでは28-30行目でレイアウト内の3つのボタンにイベントリスナをセットしている。最後にMain側のレイアウトxmlとActivityのソースを示す。}}主要な処理は全てカスタムビュー側に書いてしまったので、Main側の処理はメインレイアウトxmlでカスタムビューを定義するだけになった。このようにして、各部分のコンポーネント化を押し進めていくとコードの保守性・可読性が上がっていくだろう。コメントをキャンセルメールアドレスが公開されることはありません。