それってほんとにRelativeLayout必要?


先日、↑のようなレイアウトを作成しようとして、知ったことをメモ。

いつの頃からかAndroidのEclipseはRelativeLayoutをデフォルトにレイアウトするようになっていて、(といっても、私はAndroid Studioのほうを使っていますがw)ついつい、

  • +ボタンは左寄せ
  • 送信ボタンは右寄せ
  • テキストボックスは+ボタンの右、送信ボタンの左

みたいな考えをしがちです。

が、このレイアウトでは、

  • 送信ボタンがテキストボックスにあわせて伸びる(=match_parent指定が必要)
  • +ボタンはテキストボックスに合わせて伸びない(=wrap_content指定が必要)

なので、RelativeLayoutではうまくいきません。

じゃあ、どうするのか?

LinearLayoutのlayout_weightをうまくつかう のです。

layout_weightプロパティは、レイアウトの残った部分で、うまく配分してくれるらしいので、↑のように指定をすることで、両端のボタンを配置して残った部分全体にテキストボックスを置くことができます。

LinearLayoutでは、

  • minWidth, minHeightとかも使える
  • 送信ボタンをmatch_parent指定にするとテキストボックス配置後のボックスサイズにぴったりな感じでレイアウトしてくれる

など、RelativeLayoutだとできなかったこともできます。