あと1週間ですよー。フジロック。
来週の今頃にはテントたてて芝生でごろごろしながら前夜祭待ってるはずのhidakaです。

さて、Android。LinearLayoutのLayout weightの話。

Layout weightを指定して、LinearLayout内の要素のサイズを割合で指定しますよね。
画面サイズ違い吸収するために、このパーツは固定して、これとこれはこの比率のまま広がってほしい!とか。
で、Layout weight指定して、わーいうまくいったー。さて中の要素いれようとした時、問題が起こります。
Layout weight指定したレイアウトにImageViewとかいれると、中の要素によって広がったりしてしまいます。全然割合あわなくなってしまったり。
サンプルみても、Layout weight指定してるのはTextViewとかButtonですごくシンプルだったり。
いやLayout weight指定したLayoutに入れたいんだけど、、といった場合にあまり把握していなかったんですが、解決策。

Layout weight指定しているレイアウトのLayout widthかLayout heightに0dpを指定。

指定するのはLinearLayoutで並べている方向のものです。
縦に並べてたらLayout heightを0dpに。

左がheightに0dpを指定したもの、右が一番下の行だけwrap_contentにしてみたもの。
右はfill_parentに指定されたimageviewのサイズに引っ張られて崩れちゃってます。
(ImageViewはheight,widthをfill_parent、scaletypeをcenterにしてあります)


device-2011-07-21-164248.png device-2011-07-21-165823.png


レイアウトのXMLはこちら

これで内側の枠内でfill_parent指定もOK。外側のレイアウト崩れを気にする必要がなくなります。

HTML5飯