LinearLayoutとRelativeLayoutの使い分け

投稿者: | 2014年6月11日

Android のレイアウトファイルを作るとき今まであまり考えずに LinearLayout を使うことが多かった。
大抵の場合は LinearLayout と RelativeLayout どっちでも仕様を実現できるのでどちらを使うのが正しいのか、ちゃんと考えたことが無かったので考えてみようと思う。
まずはそれぞれの特徴から。

LinearLayout

子 View を縦(vertical) or 横(horizontal)一列に並べて配置する。
[メリット]
・直感的に使いやすく Android 技術者であればほぼ全員使い方を知っている。
・リーダブルコード的な観点で言うと構成を読み解きやすく優秀。
・後からレイアウトを変えやすいので仕様変更に強い
・weightが便利
[デメリット]
・View階層が深くなりやすいので重くなることがある。

RelativeLayout

親 View を指定して相対的に位置を指定して配置する。
[メリット]
・ LinearLayout に比べて View 階層が浅くなるので軽くすることが出来る

[デメリット]
・使い方を知らない Android 技術者が結構多い
・xmlだけパッと見て頭の中でレイアウトを組み立てにくいので可読性が低い
・後からレイアウトを変えると簡単に破綻するので仕様変更に弱い
・weightが使えない

開発者がみんな自分と同じレベルだと思ってはいけない

私みたいな色んな企業に行ってプロパーさんや派遣さん入り混じりながら開発やってる環境だと Android 技術者のレベルは全体的に低い。
とりあえず Java できます。 Android やったことあります。
そんなレベルの人はゴロゴロいる。元ガラケー技術者の人たちが大量に流れてきているからなのかも。
ヘタすると weight の使い方すら知らないひともいる。

HTML/CSS 経験者からすると LinearLayout が使いやすい

私がそうなんですけど LinearLayout 使ったレイアウトって CSS の float:left と似てるから使いやすい。
margin を設定する時なんかも各 View に margin つけるんじゃなくて親である LinearLayout に margin 設定したりする間隔も div の使い方に似てる。
RelativeLayout だと統一された margin でも各 View に設定しないといけない。

パフォーマンスが必要な時だけ RelativeLayout を使う

結論としてはどうしてもパフォーマンスが必要な時だけ RelativeLayout を使うという結論になった。
実際の現場ではできるだけ早く、仕様変更に強い構成で作ることが大事。パフォーマンスを求められることはほとんど無い。
そりゃそうだよね。誰も気づきもしない所でほんのちょびっとだけパフォーマンス良くなるように作りました。そのかわりメンテナンス性悪いです。なんてこと言ったら怒られるわ!
小規模な固定メンバーで開発する場合や、個人でアプリを開発する場合は好きに RelativeLayout を使えばいいと思う。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

*