androi

Android の UI レイアウト作成で、コンポーネントの表示・非表示についての visibility プロパティについて調べてみました。

visibility はリファレンスによると、visible / invisible / gone の3種類があるとのこと。

自分は VB6 とか C# 出の人間なので、「なんで2種類(Boolean)じゃないんだろう」と思っていましたので、ためしにやってみました。

レイアウトにボタン(じゃなくても良いけど)を2つ貼り、一つ(A とします)を可変幅に、もう一つ(B とします)を固定幅にしました。 ボタンBは常に固定幅で画面右にあって、ボタンAは残った領域に fill するイメージです。 (※ボタンA の layout_weight を B より大きな値にセットするのがミソです)

この状態で、ボタン B の visibility を変えてみて、どんな変化が起こるか確認してみました。

それが↓これ。

"1"

なるほど。 invisible は、そこに存在するけど見えていない。ので空白の領域ができる。 gone は、存在自体が無くなる。ので ボタンA がいっぱいまで表示される。 VB6 や C# に例えていうなら、Visible の true が "visible" で、false は "gone" なんですね、納得。

ちなみに "gone" を英和辞典で調べると、「消失した、いなくなった」 という意味もあるそうで、なるほど。